Difference between revisions of "Carbon interface internals/de"

From Lazarus wiki
Jump to navigationJump to search
m
m
Line 44: Line 44:
 
!STYLE="background:#99D2FD;"|Abhängigkeiten
 
!STYLE="background:#99D2FD;"|Abhängigkeiten
 
!STYLE="background:#99D2FD;"|Verantwortlich
 
!STYLE="background:#99D2FD;"|Verantwortlich
|----
 
|Mouse Capture releasing|| || ||
 
|----
 
|TBrush Patterns||CGPatternCreate|| ||
 
|----
 
|StretchMaskBlt||Implement: ROP, stretch mode||||
 
|----
 
|TCalendar||no counterpart|| ||
 
|----
 
|TFontDialog||FPShowHideFontPanel|| ||[[User:Tombo|Tombo]]
 
 
|----
 
|----
 
|TListView||CreateDataBrowserControl|| ||[[User:Tombo|Tombo]]
 
|TListView||CreateDataBrowserControl|| ||[[User:Tombo|Tombo]]
|----
 
|TScrollBox, TCustomControl with scrollbars, TScrollingWinControl||HIScrollViewCreate|| || [[User:Tombo|Tombo]]
 
|----
 
|IDE form designer||kOverlayWindowClass|| ||
 
|----
 
|TPageSetupDialog||PMSessionPageSetupDialog|| ||
 
|----
 
|TPrintDialog, TPrinterSetupDialog||PMSessionPrintDialog|| ||
 
|}
 
 
== Bugs ==
 
 
{|BORDER="1" CELLSPACING="0"
 
!STYLE="background:#FF9999;"|Item
 
!STYLE="background:#FF9999;"|Anmerkung
 
!STYLE="background:#FF9999;"|Abhängigkeiten
 
!STYLE="background:#FF9999;"|Verantwortlich
 
|----
 
|TCustomControl - keyboard focus|| || ||
 
|----
 
|TCustomEdit.CharCase||Is ignored when typing text|| ||
 
|----
 
|TMemo.WordWrap||persistent bug, when word wrap is disabled the memo doesn't scroll to caret|| ||
 
|----
 
|TMaskEdit||Every typed char is doubled|| ||
 
|----
 
|TStringGird||Crashes sometimes when userinput is to fast|| ||
 
 
|}
 
|}
  

Revision as of 18:29, 30 October 2007

Deutsch (de) English (en)

macOSlogo.png

Dieser Artikel behandelt ausschließlich macOS.

Siehe auch: Multiplatform Programming Guide/de

Apple iOS new.svg

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

Die Carbon API unit von FreePascal ist FPCMacOSAll.pas in /usr/local/share/fpcsrc/packages/extra/univint.

Carbon Schnittstelle Entwicklungs-Grundlagen

  • Die Mac OS X Zielversion ist 10.4
  • Vermeiden sie die Verwendung von veralteten oder ausgemusterten APIs und Funktionen (z.B. QuickDraw vs. Quartz 2D)
  • Verwenden sie den Objektansatz
  • Prüfen sie die Ergebnisse von Carbon Aufrufen mit der OSError Funktion
  • erwenden Sie UTF-8 kodierte Zeichenketten zwischen LCL und dem Carbon widgetset (für zukünftige Lazarus Unicode Unterstützung)

Was funktioniert bereits ?

Working components in the Carbon interface

Was muss als nächstes getan werden ?

Item Anmerkung Abhängigkeiten Verantwortlich
TListView CreateDataBrowserControl Tombo

Carbon IDE Bugs

Item Anmerkung Abhängigkeiten Verantwortlich
Synedit No caret
Vertical scroll range is not exact
Mouse Wrong position is reported when mouse over component toolbar Bug 0009921
PageControl No arrows to switch tabs - switch to Group box with pop-up menu if the tabs do not fit in
or draw tabs in rows via HIThemeDrawTab
PageControl IDE crash when quit appears to be related to PageControl
ListView IDE crash in dialogs that use TListView (not yet implemented)
'...' buttons in dialogs Now they are too large I think
OK/Cancel Many dialogs have non-Mac check-X glyphs
Menu bar Too wide for 1024x768 display resolution
Lazarus menu Help About and app prefs (Environment options) should be accessible here
Menus Many missing or non-standard menu shortcuts:

File New should be Cmd+N
File Save As should be Shift+Cmd+S
File Quit should be Cmd+Q
Search Find should be Cmd+F
Search Find Next should be Cmd+G
Search Find Previous should be Shift+Cmd+G
(Goto line and Procedure List need to be reassigned)
Option+Cmd+F does not bring up Search Results
F11 behaves weird!

Windows menu Rename to Window menu per Mac GUI standard

Currently active window should be checked

Installed Packages Package Info box not tall enough, bug 10021
Form designer Selected control doesn't show any visual change
Open Package File Filter (*.lpk) is ignored.

Kompatibilitätsprobleme

Gehen sie auf diese Seite.

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, muss registriert werden. Schauen sie sich den initialization Abschnitt am Ende der carbonwsXXX.pp Unit an:

 RegisterWSComponent(TCustomButton, TCarbonWSButton);

TCarbonWSButton setzt CreateHandle außer Kraft und erzeugt eine Carbon-Schaltfläche-Helfer-Klasse namens TCarbonButton in carbonprivate.pp, die die Schaltfläche in Carbon erzeugt und die Event-Handler installiert.