Zwei oder mehr GUI mit gemeinsamen Code

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 993
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Zwei oder mehr GUI mit gemeinsamen Code

Beitrag von kralle »

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
OS: Manjaro Linux, Debian und Windows 10
FPC-Version: 3.2.2 , Lazarus 3.0
+ Delphi XE7SP1

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6209
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

Beitrag von af0815 »

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. :shock:
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1435
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

Beitrag von fliegermichl »

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.

PascalDragon
Beiträge: 830
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

Beitrag von PascalDragon »

kralle hat geschrieben:
Sa 3. Okt 2020, 07:39
Und wie trenne ich die Oberfläche vom 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

Antworten