Sign in Join
Wiki copytemporary

Accessing the Interfaces directly/pt: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
1-Esta página descreve como ter acesso direto de escrita ao widgeset subjacente usado pelo Lazarus (por exemplo: a API do Windows, ou GTK ou QT, etc). Pode-se sempre tentar evitar de confiar nas especifidades do widgeset. Este documento está aqui para as pessoas melhorarem o widgeset e para quem escreve componentes e realmente precisa acessar os widgeset diretamente.
1+Esta página descreve como ter acesso direto de escrita ao widgeset subjacente usado pelo Lazarus (por exemplo: a API do Windows, ou GTK ou QT, etc). Pode-se sempre tentar evitar de confiar nas especifidades do widgeset. Este documento está aqui para as pessoas melhorarem o widgeset e para quem escreve componentes e realmente precisa acessar os widgeset diretamente.
22
3+## Contents
4+
5+ * 1 Visão Geral
6+ * 2 Detalhes de cada Widgetset
7+ * 2.1 Qt
8+ * 2.2 Carbon
9+ * 2.3 Windows
10+ * 3 List of Handles on various LCL classes
11+ * 3.1 TFont
12+ * 3.2 TCanvas
13+ * 3.3 TBrush
14+ * 3.4 TBitmap
15+ * 3.5 TCustomForm
16+ * 3.6 TMenu, TMainMenu, TMenuItem and TPopUpMenu
17+
318## Visão Geral
419
5-Cada TWinControl tem um handle e a LCL não precisa saber o que é um handle. O significado de um handle é totalmente assunto da interface:
20+Cada TWinControl tem um handle e a LCL não precisa saber o que é um handle. O significado de um handle é totalmente assunto da interface:
621
7-- em Gtk um handle é freqüentemente um PGtkWidget.
8-- em Windows um handle é freqüentemente um HWnd.
9-- em Carbon um handle é freqüentemente um objeto descendente de TCarbonWidget.
10-- em Qt um handle é freqüentemente um ponteiro para um objeto descendente de TQtWidget.
22+ * em Gtk um handle é freqüentemente um PGtkWidget.
23+ * em Windows um handle é freqüentemente um HWnd.
24+ * em Carbon um handle é freqüentemente um objeto descendente de TCarbonWidget.
25+ * em Qt um handle é freqüentemente um ponteiro para um objeto descendente de TQtWidget.
1126
1227## Detalhes de cada Widgetset
1328
1429### Qt
1530
16-Handles em Qt são na maioria ponteiros para objetos. Toda vez que um controle é criado, um objeto de ajuda é também criado e os dois são conectados. O objeto de ajuda é necessário para receber eventos do Qt. Depois de receber um evento, ele vai enviá-lo para a LCL.
17-
18-A maior parte dos objetos é descendente de TQtWidget, como declarado abaixo:
19-
20- { TQtWidget }
31+Handles em Qt são na maioria ponteiros para objetos. Toda vez que um controle é criado, um objeto de ajuda é também criado e os dois são conectados. O objeto de ajuda é necessário para receber eventos do Qt. Depois de receber um evento, ele vai enviá-lo para a LCL.
2132
33+A maior parte dos objetos é descendente de TQtWidget, como declarado abaixo:
34+```
35+{ TQtWidget }
36+
2237 TQtWidget = class(TObject)
2338 private
2439 public
2540 Widget: QWidgetH;
2641 LCLObject: TWinControl;
2742 end;
43+```
2844
29-Note as duas variáveis que todos eles contêm:
45+Note as duas variáveis que todos eles contêm:
3046
31-- Widget - Esta é uma conexão ao objeto do Qt para este Widget
32-- LCLObject - É uma ponte com o objeto da LCL a que ele está vinculado.
47+ * Widget - Esta é uma conexão ao objeto do Qt para este Widget
48+ * LCLObject - É uma ponte com o objeto da LCL a que ele está vinculado.
3349
3450### Carbon
3551
36-Handles em Carbon são muito similares aos do Qt. As classes do helper são descendentes da classe abstrata TCarbonWidget.
37-
38- { TCarbonWidget }
39-
52+Handles em Carbon são muito similares aos do Qt. As classes do helper são descendentes da classe abstrata TCarbonWidget.
53+```
54+{ TCarbonWidget }
55+
4056 TCarbonWidget = class(TObject)
4157 private
4258 public
4359 Widget: Pointer;
4460 LCLObject: TWinControl;
4561 end;
62+```
4663
47-Note as duas variáveis que todos eles contêm:
64+Note as duas variáveis que todos eles contêm:
4865
49-- Widget - Esta é uma conexão com o objeto do Carbon para este Widget:ControlRef (descendentes de TCarbonControl) ou WindowRef (descendentes de TCarbonWindow).
50-- LCLObject - É uma ponte com o objeto da LCL a que ele está vinculado.
66+ * Widget - Esta é uma conexão com o objeto do Carbon para este Widget:ControlRef (descendentes de TCarbonControl) ou WindowRef (descendentes de TCarbonWindow).
67+ * LCLObject - É uma ponte com o objeto da LCL a que ele está vinculado.
5168
5269### Windows
5370
54-Handles em Win32 ou WinCE são quase sempre o mesmo que os seus handles relativos da API. Por exemplo, um handle de TMenu é HMENU, um handle de TBrush é HBRUSH, portanto você pode facilmente usá-los e passá-los para as APIs.
71+Handles em Win32 ou WinCE são quase sempre o mesmo que os seus handles relativos da API. Por exemplo, um handle de TMenu é HMENU, um handle de TBrush é HBRUSH, portanto você pode facilmente usá-los e passá-los para as APIs.
5572
5673## List of Handles on various LCL classes
5774
5875### TFont
5976
60-- Win32, WinCE: HFONT
61-- Qt: Um objeto TQtFont de qtprivate.pas
62-- Carbon: Um objeto TCarbonFont de carbongdiobjects.pp
77+ * Win32, WinCE: HFONT
78+ * Qt: Um objeto TQtFont de qtprivate.pas
79+ * Carbon: Um objeto TCarbonFont de carbongdiobjects.pp
6380
6481### TCanvas
6582
66-- Win32, WinCE: HDC
67-- Gtk: Um objeto TDeviceContext de gtkdef.pp
68- - Você pode can pegar um drawable, por exemplo com: TDeviceContext(MyCanvas.Handle).Drawable
69-- Qt: Um objeto TQtDeviceContext de qtprivate.pas
70-- Carbon: Um objeto TCarbonDeviceContext de carboncanvas.pp
71- - O handle nativo pode ser accessado com TCarbonDeviceContext(MyCanvas.Handle).CGContext de tipo CGContextRef
83+ * Win32, WinCE: HDC
84+ * Gtk: Um objeto TDeviceContext de gtkdef.pp
85+ * Você pode can pegar um drawable, por exemplo com: TDeviceContext(MyCanvas.Handle).Drawable
86+ * Qt: Um objeto TQtDeviceContext de qtprivate.pas
87+ * Carbon: Um objeto TCarbonDeviceContext de carboncanvas.pp
88+ * O handle nativo pode ser accessado com TCarbonDeviceContext(MyCanvas.Handle).CGContext de tipo CGContextRef
7289
7390### TBrush
7491
75-- Win32, WinCE: HBRUSH
76-- Qt: Um objeto TQtBrush de qtprivate.pas
77-- Carbon: Um objeto TCarbonBrush de carbongdiobjects.pp
92+ * Win32, WinCE: HBRUSH
93+ * Qt: Um objeto TQtBrush de qtprivate.pas
94+ * Carbon: Um objeto TCarbonBrush de carbongdiobjects.pp
7895
7996### TBitmap
8097
81-- Win32, WinCE: HBITMAP
82-- Gtk: PGDIObject (definido na unidade GtkDef)
83-- Qt: Um objeto TQtImage de qtobjects.pas unit
84-- Carbon: Um objeto TCarbonBitmap de carbongdiobjects.pp
85-
86-Você pode acessar isto no Gtk fazendo:
98+ * Win32, WinCE: HBITMAP
99+ * Gtk: PGDIObject (definido na unidade GtkDef)
100+ * Qt: Um objeto TQtImage de qtobjects.pas unit
101+ * Carbon: Um objeto TCarbonBitmap de carbongdiobjects.pp
87102
88- var
103+Você pode acessar isto no Gtk fazendo:
104+```
105+var
89106 GDIObject: PGDIObject;
90107 Bitmap: TBitmap;
91108 AImage: PGtkWidget;
92109 begin
93110 ...
94-
95- GDIObject := PgdiObject(Bitmap.Handle);
96-
97- AImage := gtk_image_new_from_pixmap(GDIObject^.GDIPixmapObject,
111+
112+ GDIObject := PgdiObject(Bitmap.Handle);
113+
114+ AImage := gtk_image_new_from_pixmap(GDIObject^.GDIPixmapObject,
98115 GDIObject^.GDIBitmapMaskObject);
99-
116+
100117 gtk_widget_show(AImage);
101-
118+
102119 gtk_container_add(GTK_CONTAINER(MyForm.Handle), AImage);
103120 end;
121+```
104122
105123### TCustomForm
106124
107-- Win32, WinCE: it´s a HWND, um handle de janela nativo
108-- Gtk: É um ponteiro para uma estrutura.
109-- Qt: O handle é um ponteiro para um objeto da classe TQtMainWindow declarada em qtwidgets.pas. Para ter acess ao objeto do Qt TQtMainWindow significa faça:
125+ * Win32, WinCE: it´s a HWND, um handle de janela nativo
126+ * Gtk: É um ponteiro para uma estrutura.
127+ * Qt: O handle é um ponteiro para um objeto da classe TQtMainWindow declarada em qtwidgets.pas. Para ter acess ao objeto do Qt TQtMainWindow significa faça:
110128
111-TQtMainWindow(Handle).Widget
129+TQtMainWindow(Handle).Widget
112130
113-- Carbon: TCarbonWindow de carbonprivate.pp
131+ * Carbon: TCarbonWindow de carbonprivate.pp
114132
115133### TMenu, TMainMenu, TMenuItem and TPopUpMenu
116134
117-- Win32, WinCE : HMENU
118-- Qt: TMainMenu é um ponteiro para um objeto TQtMenuBar. TPopUpMenu é um objeto TQtMenu. TMenuItem pode ser um TQtAction se representa um item selecionável, ou um separador ou um TQtMenu se é um item que tem submenus.
119-- Carbon: TMenuItem é um objeto TCarbonMenu, TMenu (TMainMenu e TPopupMenu) é representado pelo seu item de menu raiz.
135+ * Win32, WinCE : HMENU
136+ * Qt: TMainMenu é um ponteiro para um objeto TQtMenuBar. TPopUpMenu é um objeto TQtMenu. TMenuItem pode ser um TQtAction se representa um item selecionável, ou um separador ou um TQtMenu se é um item que tem submenus.
137+ * Carbon: TMenuItem é um objeto TCarbonMenu, TMenu (TMainMenu e TPopupMenu) é representado pelo seu item de menu raiz.
120138
121139---
122-*From the Free Pascal wiki, page "Accessing the Interfaces directly/pt", as it stood on 2012-02-03 after a change by Chronos, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
123-Category: LCL/pt
140+*From the Free Pascal wiki, page "Accessing the Interfaces directly/pt", as the Internet Archive kept it on 2024-03-08. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history