Difference between revisions of "Accessing the Interfaces directly/pt"

From Free Pascal wiki
Jump to navigationJump to search
 
(12 intermediate revisions by 2 users not shown)
Line 31: Line 31:
 
</pre>
 
</pre>
  
Note que as duas variáveis que todos eles contêm:
+
Note as duas variáveis que todos eles contêm:
  
 
* Widget - Esta é uma conexão ao objeto do Qt para este Widget
 
* Widget - Esta é uma conexão ao objeto do Qt para este Widget
Line 51: Line 51:
 
</pre>
 
</pre>
  
Note as duas variáveiss que todos eles contêm:
+
Note as duas variáveis que todos eles contêm:
  
* Widget - This is a connect to the Carbon object for this Widget: ControlRef (TCarbonControl descendants) or WindowRef (TCarbonWindow descendants).
+
* Widget - Esta é uma conexão com o objeto do Carbon para este Widget:ControlRef (descendentes de TCarbonControl) ou WindowRef (descendentes de TCarbonWindow).  
* LCLObject - Is a bridge with the LCL object it is linked to.
+
* LCLObject - É uma ponte com o objeto da LCL a que ele está vinculado.
  
 
=== Windows ===
 
=== Windows ===
  
Handles on Win32 or WinCE are almost always the same as their relative win api handles,For example handle of tmenu is HMENU,handle of TBrush is HBRUSH,so you can easily use them and pass them to windows apis.
+
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.
  
 
== List of Handles on various LCL classes ==
 
== List of Handles on various LCL classes ==
Line 65: Line 65:
  
 
* Win32, WinCE: HFONT
 
* Win32, WinCE: HFONT
* Qt: A TQtFont object from qtprivate.pas
+
* Qt: Um objeto TQtFont de qtprivate.pas
* Carbon: A TCarbonFont object from carbongdiobjects.pp
+
* Carbon: Um objeto TCarbonFont de carbongdiobjects.pp
  
 
=== TCanvas ===
 
=== TCanvas ===
  
 
* Win32, WinCE: HDC
 
* Win32, WinCE: HDC
* Gtk: A TDeviceContext object from gtkdef.pp
+
* Gtk: Um objeto TDeviceContext de gtkdef.pp
** You can get a drawable, for example with: TDeviceContext(MyCanvas.Handle).Drawable
+
** Você pode can pegar um drawable, por exemplo com: TDeviceContext(MyCanvas.Handle).Drawable
* Qt: A TQtDeviceContext object from qtprivate.pas
+
* Qt: Um objeto TQtDeviceContext de qtprivate.pas
* Carbon: A TCarbonDeviceContext object from carboncanvas.pp
+
* Carbon: Um objeto TCarbonDeviceContext de carboncanvas.pp
** The native handle can be accessed with TCarbonDeviceContext(MyCanvas.Handle).CGContext of type CGContextRef
+
** O handle nativo pode ser accessado com TCarbonDeviceContext(MyCanvas.Handle).CGContext de tipo CGContextRef
  
 
=== TBrush ===
 
=== TBrush ===
  
 
* Win32, WinCE: HBRUSH
 
* Win32, WinCE: HBRUSH
* Qt: A TQtBrush object from qtprivate.pas
+
* Qt: Um objeto TQtBrush de qtprivate.pas
* Carbon: A TCarbonBrush object from carbongdiobjects.pp
+
* Carbon: Um objeto TCarbonBrush de carbongdiobjects.pp
  
 
=== TBitmap ===
 
=== TBitmap ===
  
 
* Win32, WinCE: HBITMAP
 
* Win32, WinCE: HBITMAP
* Gtk: PGDIObject (defined on unit GtkDef)
+
* Gtk: PGDIObject (definido na unidade GtkDef)
* Qt: A TQtImage object from qtobjects.pas unit
+
* Qt: Um objeto TQtImage de qtobjects.pas unit
* Carbon: A TCarbonBitmap object from carbongdiobjects.pp
+
* Carbon: Um objeto TCarbonBitmap de carbongdiobjects.pp
  
You can access this on Gtk using:
+
Você pode acessar isto no Gtk fazendo:
  
 
<pre>
 
<pre>
Line 113: Line 113:
 
=== TCustomForm ===
 
=== TCustomForm ===
  
* Win32, WinCE: it´s a HWND, a native window handle
+
* Win32, WinCE: it´s a HWND, um handle de janela nativo
* Gtk: It´s a pointer to a structure.
+
* Gtk: É um ponteiro para uma estrutura.
* Qt: The Handle is a pointer to a object from the TQtMainWindow class declared at qtwidgets.pas. To have access to the QMainWindow Qt object it represents do: TQtMainWindow(Handle).Widget
+
* 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:
* Carbon: TCarbonWindow from carbonprivate.pp
+
TQtMainWindow(Handle).Widget
 +
* Carbon: TCarbonWindow de carbonprivate.pp
  
 
=== TMenu, TMainMenu, TMenuItem and TPopUpMenu ===
 
=== TMenu, TMainMenu, TMenuItem and TPopUpMenu ===
  
 
* Win32, WinCE : HMENU
 
* Win32, WinCE : HMENU
* Qt: TMainMenu is a pointer to a TQtMenuBar object. TPopUpMenu is a TQtMenu object. TMenuItem can either be a TQtAction if it represents a clickable item or a separator or a TQtMenu if it is an item that has submenus.
+
* 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.
* Carbon: TMenuItem is a TCarbonMenu object, TMenu (TMainMenu and TPopupMenu) is represented by its root menu item
+
* Carbon: TMenuItem é um objeto TCarbonMenu, TMenu (TMainMenu e TPopupMenu) é representado pelo seu item de menu raiz.
 +
 
 +
[[Category:LCL/pt]]

Latest revision as of 21:13, 3 February 2012

English (en) português (pt)

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.

Visão Geral

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:

  • em Gtk um handle é freqüentemente um PGtkWidget.
  • em Windows um handle é freqüentemente um HWnd.
  • em Carbon um handle é freqüentemente um objeto descendente de TCarbonWidget.
  • em Qt um handle é freqüentemente um ponteiro para um objeto descendente de TQtWidget.

Detalhes de cada Widgetset

Qt

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.

A maior parte dos objetos é descendente de TQtWidget, como declarado abaixo:

 { TQtWidget }

 TQtWidget = class(TObject)
 private
 public
   Widget: QWidgetH;
   LCLObject: TWinControl;
 end;

Note as duas variáveis que todos eles contêm:

  • Widget - Esta é uma conexão ao objeto do Qt para este Widget
  • LCLObject - É uma ponte com o objeto da LCL a que ele está vinculado.

Carbon

Handles em Carbon são muito similares aos do Qt. As classes do helper são descendentes da classe abstrata TCarbonWidget.

 { TCarbonWidget }

 TCarbonWidget = class(TObject)
 private
 public
   Widget: Pointer;
   LCLObject: TWinControl;
 end;

Note as duas variáveis que todos eles contêm:

  • Widget - Esta é uma conexão com o objeto do Carbon para este Widget:ControlRef (descendentes de TCarbonControl) ou WindowRef (descendentes de TCarbonWindow).
  • LCLObject - É uma ponte com o objeto da LCL a que ele está vinculado.

Windows

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.

List of Handles on various LCL classes

TFont

  • Win32, WinCE: HFONT
  • Qt: Um objeto TQtFont de qtprivate.pas
  • Carbon: Um objeto TCarbonFont de carbongdiobjects.pp

TCanvas

  • Win32, WinCE: HDC
  • Gtk: Um objeto TDeviceContext de gtkdef.pp
    • Você pode can pegar um drawable, por exemplo com: TDeviceContext(MyCanvas.Handle).Drawable
  • Qt: Um objeto TQtDeviceContext de qtprivate.pas
  • Carbon: Um objeto TCarbonDeviceContext de carboncanvas.pp
    • O handle nativo pode ser accessado com TCarbonDeviceContext(MyCanvas.Handle).CGContext de tipo CGContextRef

TBrush

  • Win32, WinCE: HBRUSH
  • Qt: Um objeto TQtBrush de qtprivate.pas
  • Carbon: Um objeto TCarbonBrush de carbongdiobjects.pp

TBitmap

  • Win32, WinCE: HBITMAP
  • Gtk: PGDIObject (definido na unidade GtkDef)
  • Qt: Um objeto TQtImage de qtobjects.pas unit
  • Carbon: Um objeto TCarbonBitmap de carbongdiobjects.pp

Você pode acessar isto no Gtk fazendo:

var
  GDIObject: PGDIObject;
  Bitmap: TBitmap;
  AImage: PGtkWidget;
begin
  ...

  GDIObject := PgdiObject(Bitmap.Handle);

  AImage := gtk_image_new_from_pixmap(GDIObject^.GDIPixmapObject,
   GDIObject^.GDIBitmapMaskObject);

  gtk_widget_show(AImage);

  gtk_container_add(GTK_CONTAINER(MyForm.Handle), AImage);
end;

TCustomForm

  • Win32, WinCE: it´s a HWND, um handle de janela nativo
  • Gtk: É um ponteiro para uma estrutura.
  • 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:

TQtMainWindow(Handle).Widget

  • Carbon: TCarbonWindow de carbonprivate.pp

TMenu, TMainMenu, TMenuItem and TPopUpMenu

  • Win32, WinCE : HMENU
  • 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.
  • Carbon: TMenuItem é um objeto TCarbonMenu, TMenu (TMainMenu e TPopupMenu) é representado pelo seu item de menu raiz.