Difference between revisions of "Carbon interface internals/de"
m |
|||
Line 30: | Line 30: | ||
* TLabel is custom drawn in the LCL. That means TCanvas needs to be implemented first. | * TLabel is custom drawn in the LCL. That means TCanvas needs to be implemented first. | ||
− | * TCanvas | + | * TCanvas benötigt GetDC/ReleaseDC, fonts, brush, pen, clipping und paint Nachrichten |
− | * TMenu | + | * TMenu ist ganz anders als die GTK und Win32 Menüs. |
== Wie man ein neues Bedienelement hinzufügt == | == Wie man ein neues Bedienelement hinzufügt == |
Revision as of 21:30, 24 January 2006
│ Deutsch (de) │ English (en) │
Dieser Artikel behandelt ausschließlich macOS.
Siehe auch: Multiplatform Programming Guide/de
Dieser Artikel behandelt ausschließlich iOS.
Siehe auch: Multiplatform Programming Guide/de
Diese Seite bietet einen Überblick über die LCL Carbon Schnittstelle für Mac OS X und soll neuen Entwicklern helfen.
Für die Installation und Erzeugung einer ersten Carbon Anwendung lesen sie zunächst Carbon Interface.
Dokumentation über Carbon
Was funktioniert bereits ?
- Erstellen einer TForm
- Erstellen und Klicken auf einen TButton
- Erstellen und Bearbeiten eines TEdit
- Erstellen von TOpenGLControl mit AGL Kontext (siehe components/opengl/)
- Maus Ereignisse
- Tastatur Ereignisse (VK_ mapping für fremde Tastaturen muß noch getestet werden)
Was muß als nächstes getan werden ?
- Erstellen weiterer Bedienelemente (TComboBox, TCheckBox, TRadioButton, TGroupBox)
- Resize Ereignisse (wenn das Formular vom Benutzer resized wird)
- InvalidateRect
- ShowModal (für Dialoge)
Weitere schwierige Aufgaben
- TLabel is custom drawn in the LCL. That means TCanvas needs to be implemented first.
- TCanvas benötigt GetDC/ReleaseDC, fonts, brush, pen, clipping und paint Nachrichten
- TMenu ist ganz anders als die GTK und Win32 Menüs.
Wie man ein neues Bedienelement hinzufügt
Zum Beispiel TButton.
TButton wird definiert in lcl/buttons.pp. Dies ist der plattformunabhängige Teil der LCL, welcher vom normalen LCL Programmierer benutzt wird.
Seine widgetset Klasse befindet sich in lcl/widgetset/wsbuttons.pp. Dies ist die plattformabhängige Basis für alle widgetsets (carbon, gtk, win32, ...).
Seine Carbon Schnittstellenklasse ist in lcl/interfaces/carbon/carbonwsbuttons.pp:
TCarbonWSButton = class(TWSButton) private protected public class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override; end;
Jede WS Klasse, die tatsächlich etwas implementiert, muß registriert werden. Schauen sie den initialization Abschnitt am Ende der carbonwsXXX.pp Unit an:
RegisterWSComponent(TCustomButton, TCarbonWSButton);
TCarbonWSButton setzt CreateHandle außer Kraft, um einen Carbon Button zu erstellen. Der Code ist kurz und sollte leicht anpassbar sein für andere Bedienelemente wie TCheckBox.
Tastatur
- Apple Command key is mapped to ssCtrl due to Apple Guidelines
- Apple control key is mapped to ssMeta
- Apple option key is mapped to its inscription, i.e. ssAlt