Moin,
vor einiger Zeit hatten wir hier das Thema Android-Entwicklung unter Linux mit Lazarus.
Für Android muß man aber extra Komponenten für die GUI nutzen.
Die gleichen Komponenten funktionieren nicht unter Linux und Windows.
Wie binde ich verschiedene grafische Oberflächen in ein Projekt ein und sorge dafür das je nach Zielsystem, die richte Oberfläche compiliert wird.
Und wie trenne ich die Oberfläche vom Code.
Wenn ich z.B. einen Android-Button habe und für die gleiche Funktion einen "normalen" Button habe, müsste ich im Quellcode von beiden Buttons den Zustand abfragen.
Muss ich dann alle Abfragen doppelt und dreifach einbauen?
Ich kann mir das mit der Trennung nicht richtig vorstellen.
Gruß HEiko
Zwei oder mehr GUI mit gemeinsamen Code
- kralle
- Lazarusforum e. V.
- Beiträge: 1196
- Registriert: Mi 17. Mär 2010, 14:50
- OS, Lazarus, FPC: Manjaro Linux, Mint und Windows 10 ,Lazarus 3.99, FPC-Version: 3.3.1
- CPU-Target: 64Bit
- Wohnort: Bremerhaven
- Kontaktdaten:
Zwei oder mehr GUI mit gemeinsamen Code
OS: Manjaro Linux, Linux Mint und Windows 10
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1
- af0815
- Lazarusforum e. V.
- Beiträge: 6780
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Zwei oder mehr GUI mit gemeinsamen Code
Mit RAD kommst da nicht weiter. Es geht, wenn man alles komplett entkoppelt und auch die ganze Ereignisbehandlungszuweisung im Code macht. MSE und fpGUI haben solche Ansätze verfolgt. Verwenden kann dann natürlich nur die Komponenten die es auf allen Plattformen gibt. Und dann bleibt nur ein spartanischer Rest über.
Einfach probieren und sich mal mit großen Augen die Unterschiede der verschiedenen Plattformen ansehen.
Einfach probieren und sich mal mit großen Augen die Unterschiede der verschiedenen Plattformen ansehen.

Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1646
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: Zwei oder mehr GUI mit gemeinsamen Code
Also ein möglicher Ansatz wäre Actionlisten zu verwenden. Denen ist nämlich egal wer die Action ausgelöst hat. Ein weiterer Vorteil ist, daß die angebundenen Controls automatisch den richtigen Hint bekommen und falls die Action disabled ist, werden auch die entsprechenden Controls automatisch disabled.
Die Quellcodes werden getrennt nach "Funktion" und "Oberfläche" gehalten. In meinem CAD habe ich z.B. eine Unit cadtypes.pas. Da sind alle Klassen definiert, die die eigentliche Arbeit leisten und bei jedem Target gebraucht werden. Für die Oberfläche werden die entsprechenden Units je nach dem aktuellen Widgetset eingebunden.
Die Quellcodes werden getrennt nach "Funktion" und "Oberfläche" gehalten. In meinem CAD habe ich z.B. eine Unit cadtypes.pas. Da sind alle Klassen definiert, die die eigentliche Arbeit leisten und bei jedem Target gebraucht werden. Für die Oberfläche werden die entsprechenden Units je nach dem aktuellen Widgetset eingebunden.
-
- Beiträge: 955
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: Zwei oder mehr GUI mit gemeinsamen Code
Hier empfehlen sich Design Patterns wie Model-View-Controller oder Model-GUI-Mediator. Für letzteres gibt es zum Beispiel von Graeme Geldenhuys einen Artikel, wo er das etwas besser erklärt.
Man muss sich aber auf jeden Fall ein wenig mit der Thematik beschäftigen und vielleicht auch rumspielen, um dann eine saubere Trennung und Abstraktion hinzubekommen.
FPC Compiler Entwickler