Difference between revisions of "Carbon interface internals/de"
m |
m |
||
Line 33: | Line 33: | ||
|TControl.Cursor||SetThemeCursor|| || | |TControl.Cursor||SetThemeCursor|| || | ||
|---- | |---- | ||
− | |TComboBox||HIComboBox(Create)|| || | + | |TComboBox||HIComboBox(Create)|| ||[[User:Tombo|Tombo]] |
|---- | |---- | ||
|TToggleBox||CreateBevelButtonControl with kControlBehaviorToggles|| ||[[User:Tombo|Tombo]] | |TToggleBox||CreateBevelButtonControl with kControlBehaviorToggles|| ||[[User:Tombo|Tombo]] |
Revision as of 12:52, 28 February 2007
│ 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
Carbon interface development basics
- Target Mac OS X version is 10.4
- Avoid using obsolete or deprecated APIs and functions (e. g. QuickDraw vs. Quartz 2D)
Was funktioniert bereits ?
- Forms and controls - see Roadmap Widgetset dependent components
- 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 ?
Item | Anmerkung | Abhängigkeiten | Verantwortlich |
---|---|---|---|
TControl.Cursor | SetThemeCursor | ||
TComboBox | HIComboBox(Create) | Tombo | |
TToggleBox | CreateBevelButtonControl with kControlBehaviorToggles | Tombo | |
TListBox | CreateListBoxControl | ||
TCanvas | Quartz 2D, CGContext | Tombo | |
TPen | Quartz 2D | Tombo | |
TBrush | Quartz 2D | Tombo | |
SaveDC, RestoreDC | Quartz 2D, CGContextSaveGState, CGContextRestoreGState | Tombo | |
TBitmap.LoadFromFile | Quartz 2D, CGImage | GetDeviceRawImageDescription, CreateBitmapFromRawImage, GetObject | Tombo |
TColorDialog | Color Picker Manager | Tombo | |
TButton.Default indication | kControlPushButtonDefaultTag | Tombo | |
TBitBtn | CreateBevelButtonControl | Tombo | |
TCustomControl | |||
TGraphicControl | MoveWindowOrgEx, IntersectClipRect, SaveDC, RestoreDC | ||
ScreenDC | CGDisplayCapture, CGDisplayGetDrawingContext, CGDisplayRegisterReconfigurationCallback | TCarbonScreenContext | |
Hints | CreateNewWindow with kHelpWindowClass | WindowFromPoint | |
TOpenDialog | NavCreateGetFileDialog | Phil |
Bugs
Item | Anmerkung | Abhängigkeiten | Verantwortlich |
---|---|---|---|
Mouse events fired on structure part of TForm | |||
ShowWindow | Maximize <-> Restore is breaked | ||
TScrollBar and TTrackBar live tracking | |||
TScrollBar arrow clicking | |||
TCustomEdit.MaxLength | The caret pos is not preserved when typed text is longer than maxlength | Tombo | |
TMemo.ReadOnly | |||
TMemo.WordWrap | |||
TMemo is not scrolling to caret | |||
TMemo.ScrollBars | Embed in HIScrollView -> solve event handling | ||
EnumFontFamiliesEx, FindCarbonFontID | Get UTF-8 font names | UTF16ToUTF8 | Tombo |
TCustomCheckBox.OnClick | Called before state is changed -> toggle manually | Tombo | |
TForm.ShowModal | Problem with repeated calling | ||
TMaskEdit | Every typed char is doubled |
Compatibility issues
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
- Virtual key codes mapping (depends on keyboard language layout!)
- Shortcuts indication (ampersand)
Drawing on canvas outside OnPaint event
- paints into QuickDraw window port, maybe QDBeginCGContext, QDEndCGContext would help
TControl.Color
- background of Carbon controls is transparent
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.