Google Chrome style tabs on glass w Delphi

Próbuję zaimplementować karty Google Chrome style, w Windows 7, w aplikacji Delphi.

Elementami tego są:

  • karty mogą rozciągać się w obszarze innym niż klient, tak jak w samej przeglądarce Google chrome.
  • rysuje poprawnie Na Vista i Windows 7, gdy szkło jest włączone
  • karty działają jak google chrome i wyglądają jak Google chrome, nad szkłem.

Tutaj wpisz opis obrazka

Odkryłem, że wyzwania, które muszę pokonać są:

  • Jak uzyskać kontrolę (VCL control), aby rozszerzyć się na obszar spoza klienta? (Dobrą próbką kontrolki, która to robi, jest kontrolka wstążki zawarta w źródłach VCL, ale nie widziałem, aby ktoś inny to robił, i potrzeba jakiegoś niegodziwego hakowania, aby wstążka działała) {]}
  • Jak prawidłowo rysować bitmapy nad szkłem? (DWM API). Podobne pytanie już odpowiada na ten aspekt, tutaj to pytanie zostało również zadane przeze mnie.
Author: Community, 2010-10-13

4 answers

Nie chcesz pełnego szklanego okna, ale będziesz musiał narysować zakładki samodzielnie, ponieważ nie ma kontroli, której jestem świadomy, która da ci dokładny wygląd, którego szukasz. Jeśli używasz właściwości GlassFrame bieżącego formularza, włącz go i ustaw górę na wysokość, którą chcesz dla kart, upuść paintbox na tym obszarze i użyj wywołań GDI+, aby ręcznie narysować karty. Dobra biblioteka, która powinna działać w tym celu, jest dostępna w EDN ( http://cc.embarcadero.com/Download.aspx?id=26950). bez użycia GDI+ będziesz mógł rysować na pudełku, ale czarny stanie się przezroczysty. Dzięki GDI+ możesz dowolnie rysować na szkle w dowolnym kolorze. Na przykład:

przykład działania

Źródło:

unit Unit6;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, GdiPlusHelpers, GdiPlus, StdCtrls, ExtCtrls;

type
  TForm6 = class(TForm)
    pb1: TPaintBox;
    procedure pb1Paint(Sender: TObject);
  private
    { Private declarations }
   public
    { Public declarations }
  end;

var
  Form6: TForm6;

implementation

{$R *.dfm}

procedure TForm6.pb1Paint(Sender: TObject);
var
  Graphics : IGPGraphics;
  Brush: IGPSolidBrush;
  FontFamily: IGPFontFamily;
  Font: IGPFont;
  Point: TGPPointF;
  Pen: IGPPen;
begin
  Graphics := Pb1.ToGPGraphics;
  Brush := TGPSolidBrush.Create(TGPColor.Create(255, 0, 0, 0));
  FontFamily := TGPFontFamily.Create('Consolas');
  Font := TGPFont.Create(FontFamily, 12, FontStyleRegular, UnitPoint);
  Point.Initialize(1, 0);
  Graphics.TextRenderingHint := TextRenderingHintAntiAlias;
  Graphics.DrawString('GDI+ Black Text', Font, Point, Brush);
  Pen := TGPPen.Create(TGPColor.Create(255, 0, 0, 0));
  Graphics.DrawLine(Pen, 0, 0, 200, 100);
end;

end.

Forma:

object Form6: TForm6
  Left = 0
  Top = 0
  Caption = 'Form6'
  ClientHeight = 282
  ClientWidth = 418
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  GlassFrame.Enabled = True
  GlassFrame.Top = 22
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object pb1: TPaintBox
    Left = 0
    Top = 0
    Width = 313
    Height = 105
    OnPaint = pb1Paint
  end
end

Edytuj Zaktualizowano do anty-aliasu tekst, aby wyglądał lepiej.

 7
Author: skamradt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-13 17:24:20

Właśnie ukończyłem całkiem kompletną implementację Chrome Tabs dla Delphi.

Tutaj wpisz opis obrazka

Funkcje obejmują:

  • w pełni konfigurowalny wygląd, w tym gradienty, przezroczystości i niestandardowe kształty kart
  • Karty mogą być malowane na pasku tytułowym podczas korzystania z Aero
  • działa na Vista glass
  • animacja ruchu tabulatora
  • Tab transitional style effects (fade between colours and alpha level)
  • przeciągnij i upuść wewnątrz kontenera i między pojemnikami
  • przeciągnij obrazek wyświetla zakładkę I dowolny TWinControl
  • zmiana rozmiaru inteligentnej Zakładki po kliknięciu przycisku Zamknij
  • Zmiana rozmiaru karty płynu z minimalnymi i maksymalnymi rozmiarami kart
  • przycisk Dodaj zakładkę może być umieszczony po lewej, prawej lub unoszącej się w prawo
  • w pełni funkcjonalne przewijanie, w tym automatyczne przewijanie podczas przeciągania
  • wyświetlanie zawartości Kart Inteligentnych ukrywa / pokazuje elementy w zależności od szerokości kart
  • właściciel narysuj dowolny element
  • od prawej do lewej tekst
  • przypięte zakładki
  • Tab spinners - zarówno renderowane, jak i Bitmapowe.
  • zmodyfikowane karty z animowanym blaskiem
  • obrazy tabulacji i nakładki
  • Mouse over glow
  • wiele wydarzeń
  • load/save look and feel oraz options to stream/file
  • Wygeneruj wygląd/opcje kodu Delphi

Możesz pobrać źródło i pełne demo / edytor tutaj: http://code.google.com/p/delphi-chrome-tabs/

 17
Author: norgepaul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-10 21:38:14

Znalezione znacznie później, z elementów Klever:

Http://rmklever.com/?p=248

Tutaj wpisz opis obrazka

 7
Author: Warren P,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-04 02:08:54

Malowanie w podpisie szklistej formy wyjaśnione tutaj: http://delphihaven.wordpress.com/2010/04/22/setting-up-a-custom-title-bar-reprise/ Możesz również zajrzeć do źródeł wstążek delphi.

 0
Author: Torbins,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-13 09:52:47