Autor Beitrag
Gagga
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95

Win 11
Delphi 12 Athen Pro
BeitragVerfasst: Fr 23.02.24 20:31 
Hallo

Warum funktioniert folgender Code nicht?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TFMain.SpeedButton1Click(Sender: TObject);
begin
SpeedButton2.StaysPressed := true;
end;

Weder unter Windows noch unter Android wird der Button markiert.

Baue ich das Ganze aber in eine Routine ein, in die der angeklickte Button als Sender eingeht, funktioniert das:

[hier sollte ein screenshot hin, habe ich schon `mal geschafft, diesmal nicht]

Kann mir jemand sagen, woran das liegen kann?

Gruß
Rüd
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19274
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 24.02.24 01:23 
user profile iconGagga hat folgendes geschrieben Zum zitierten Posting springen:
Warum funktioniert folgender Code nicht?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TFMain.SpeedButton1Click(Sender: TObject);
begin
SpeedButton2.StaysPressed := true;
end;

Weder unter Windows noch unter Android wird der Button markiert.
Wenn ich nach dem Klick auf SpeedButton1 (mit dem gezeigten Code) auf SpeedButton2 klicke, bleibt der bis zum nächsten Klick unten. Beim nächsten Klick kommt er dann wieder hoch, bei einem weiteren Klick bleibt er wieder unten.

Die Property StaysPressed funktioniert bei mir also genau wie in der Doku beschrieben.
Gagga Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95

Win 11
Delphi 12 Athen Pro
BeitragVerfasst: Sa 24.02.24 13:05 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconGagga hat folgendes geschrieben Zum zitierten Posting springen:
Warum funktioniert folgender Code nicht?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TFMain.SpeedButton1Click(Sender: TObject);
begin
SpeedButton2.StaysPressed := true;
end;

Weder unter Windows noch unter Android wird der Button markiert.
Wenn ich nach dem Klick auf SpeedButton1 (mit dem gezeigten Code) auf SpeedButton2 klicke, bleibt der bis zum nächsten Klick unten. Beim nächsten Klick kommt er dann wieder hoch, bei einem weiteren Klick bleibt er wieder unten.

Die Property StaysPressed funktioniert bei mir also genau wie in der Doku beschrieben.

Die Aufgabe besteht darin, mit dem Klick auf Button2 den Button1 markiert darzustellen. Button2 steht exemplarisch für eine Routine.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19274
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 24.02.24 22:40 
Dann musst du auch setzen, dass er gedrückt ist, und nicht nur, dass er unten bleibt, wenn man ihn klickt. Das geht mit IsPressed.

Du solltest dir den Quelltext der Komponente einfach anschauen, wenn du dich über so etwas wunderst. Außerdem ist es in diesem Fall auch in der Doku sehr gut beschrieben.
Gagga Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95

Win 11
Delphi 12 Athen Pro
BeitragVerfasst: So 25.02.24 14:23 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Dann musst du auch setzen, dass er gedrückt ist, und nicht nur, dass er unten bleibt, wenn man ihn klickt. Das geht mit IsPressed.

Du solltest dir den Quelltext der Komponente einfach anschauen, wenn du dich über so etwas wunderst. Außerdem ist es in diesem Fall auch in der Doku sehr gut beschrieben.


Danke für den Hinweis. Du hast recht, ich hätte in die Doku schauen können. Habe die Hilfe zu StaysPressed aufgerufen und habe den Querverweis auf IsPressed übersehen. Mein Problem ist, dass ich in Kürze entscheiden muss, ob die Anschaffung der Athen Professional für mich Sinn macht. Zu diesem Zweck teste ich viel und wundere mich halt permanent. Bei der Migration meiner Delphi 2010-Projekte treten viele Fragen auf und bei meinen ersten Versuchen, mobile Anwendungen zu entwickeln, ist es nicht anders. Siehe z.B. packed array und Android.

Momentan könnte ich mit meinen Fragen den Alleinunterhalter hier machen.

Moderiert von user profile iconTh69: Delphi-Tags hinzugefügt
Moderiert von user profile iconTh69: URL-Titel hinzugefügt
Winterschlaf2
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Di 27.02.24 18:16 
Wenn du dir den ganzen Ärger ersparen willst, dann entwickle deine Android Anwendungen im Android Studio.
Visual Studio wäre auch eine Möglichkeit, jedoch musst du dafür mind. Windows 10 installiert haben.
Das setzt natürlich voraus, dass du gewillt bist zumindest Java, Kotlin oder C# zu lernen.
Gagga Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95

Win 11
Delphi 12 Athen Pro
BeitragVerfasst: Di 27.02.24 19:22 
user profile iconWinterschlaf2 hat folgendes geschrieben Zum zitierten Posting springen:
Wenn du dir den ganzen Ärger ersparen willst, dann entwickle deine Android Anwendungen im Android Studio.
Visual Studio wäre auch eine Möglichkeit, jedoch musst du dafür mind. Windows 10 installiert haben.
Das setzt natürlich voraus, dass du gewillt bist zumindest Java, Kotlin oder C# zu lernen.

Android Studio hatte ich vor Jahren `mal installiert und ein paar Fingerübungen gemacht. Aber für ein Hobby reicht mir eine Programmierumgebung. Zudem - meine Frage zu packed array und Android würde mir auch das Android Studio nicht beantworten. Kannst Du es?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19274
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 27.02.24 21:57 
:welcome:

user profile iconWinterschlaf2 hat folgendes geschrieben Zum zitierten Posting springen:
Wenn du dir den ganzen Ärger ersparen willst, dann entwickle deine Android Anwendungen im Android Studio.
Und wie kann man dort die gleiche Anwendung für Windows und Android kompilieren?
Und wie setzt man dort unter beiden Systemen einen Button auf gedrückt? Denn darum geht es ja in der Frage.
Winterschlaf2
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 28.02.24 18:12 
Mensch, jaenicke, tu nicht so, als hättest du meinen Beitrag nicht verstanden.
Der Threadersteller möchte seine erste Android Anwendung schreiben und hat sich in das Produkt von Borland / CodeGear / Wasauchimmer festgebissen.
Und auch dir sollte aufgefallen sein, dass dieses mangelhafte Produkt neben DelphiPHP und Delphi.NET keine Zukunft hat.
Da können die Macher noch so viel daran herumdoktoren, es läuft nicht rund und ist, was die möglichen Android Features angeht, immer noch eingeschränkt. Wenn es doch einfachere und zielführende Wege gibt, dann sollte auch ein Hobbyentwickler darüber bescheid wissen. Sein Button-Problem bekommt er mit Android Studio auf Android-Ebene sicher gelöst.

Wozu braucht es überhaupt zwei identische Anwendungen auf Windows und Android?
Windows ist seit mind. Windows XP in der Lage mit externen Emulatoren Android Anwendungen am Desktop zu verknüpfen und auszuführen / zu emulieren. Also wozu noch eine EXE?
Für MAC Endgeräte besteht eine Notwendigkeit, aber selbst da haben Firmen zwei Teams die zwei eigene Apps für MAC und Android entwickeln.
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1322
Erhaltene Danke: 117

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Mi 28.02.24 20:13 
Winterschlaf2, du bist ein ziemlich merkwürdiger Vogel, würde mich nicht wundern wenn sich herausstellt das du nur eine Spamschleuder bist.
Ich unterstelle mal "er" denn "sie" benehmen sich so nicht

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
Winterschlaf2
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 28.02.24 22:57 
Sinspin, bist du ein Ornithologe oder was soll diese unqualifizierte Äußerung?
Wenn du etwas von mir willst, dann werde konkreter: "Ich behaupte ... , weil ... ".
Ansonsten, denk was du willst, aber denk leise.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19274
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 28.02.24 23:27 
Natürlich waren die Fragen nicht ernst gemeint. Aber der Punkt ist halt, dass es darum gar nicht ging. Dass es viele andere Möglichkeiten gibt, für bestimmte Systeme zu entwickeln, ist klar. Aber sie machen halt nicht immer Sinn. Das ist unter anderem eine Frage des Aufwands...
user profile iconWinterschlaf2 hat folgendes geschrieben Zum zitierten Posting springen:
Wenn es doch einfachere und zielführende Wege gibt
[...]
Wozu braucht es überhaupt zwei identische Anwendungen auf Windows und Android?
Weil man schlicht nur eine Codebasis pflegen muss und eben nicht die gleiche Anwendung mehrfach entwickeln muss. Als einfacher und zielführender kann man wohl kaum bezeichnen, wenn man erst eine neue Sprache und Entwicklungsumgebung lernen und doppelt Zeit investieren muss statt einfach nur die Zielplattform umzuschalten. Die Argumentation kann ich leider nicht nachvollziehen.
Winterschlaf2
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 29.02.24 15:27 
Jaenicke, du hast dir neben Paacal noch andere Programmiersprachen angeeignet. Wieso hast du das getan? War es dir nicht zu aufwendig? Hat es dich nicht zu viel Zeit gekostet?
Wenn nicht, wieso soll ein Hobbyentwickler sich nicht so entwickeln dürfen wie du oder viele andere?
Weil der Threadersteller noch am Anfang seiner Android-Entwicklung ist, schadet es ihm nicht etwas Neues dazuzulernen, mit einem Werkzeug das ihn effektiver voranbringt.
Mit der heutigen Technologie muss er keine zwei identischen Anwendungen für zwei Betriebssysteme entwickeln, sondern kann eine Android-Anwendung auf seinem Windows ohne viel Aufwand emulieren.