Ich brauche Hilfe , meine Form macht Ärger !

Benutzeravatar
Mike62
Beiträge: 8
Registriert: Mo 20. Jan 2025, 21:41

Ich brauche Hilfe , meine Form macht Ärger !

Beitrag von Mike62 »

Hallo liebe Linux Freunde,
Ich bin NEU hier , und möchte mich kurz vorstellen. Ich bin Rentner , und versuche meine Freizeit mit Lazarus 3.0 und Linux Mint Wilma zu verbringen.
Ich Arbeite schon 3 Monate an einen Projekt, und komme seit Tagen nicht mehr vorran. Folgendes Problem ist aufgetaucht :

Ich habe eine Form aufgerufen mit

Ausgabe:=TAusgabe.Create(self);
Ausgabe.ShowModal;
Ausgabe.Free;

Die Form besitzt 4 SpeedButton und 2 Image.
Jetzt das Problem : Ich muss jedesmal die SpeedButton 2x anklicken mit der Maus. Das kann doch nicht sein.
Das Programm besitzt noch 8 weitere Form's , und die machen das nicht. Ich bin am ende der Suche angelangt.
Bestimmt hab ich was übersehen, aber ich komm nicht darauf.
Hoffentlich kann mir jemand von euch HELFEN.

Benutzeravatar
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: Ich brauche Hilfe , meine Form macht Ärger !

Beitrag von af0815 »

Am meisten hilft, wenn man ein kompilierbares Projekt hat. Weil so kann man nur mit der Glaskugel raten.

Einfach ein einfaches Projekt erstellen, dort einen Button machen, das den von dir gezeigten Code aufruft. Macht das den gleichen Ärger, so kann man sich das ansehen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Mike62
Beiträge: 8
Registriert: Mo 20. Jan 2025, 21:41

Re: Ich brauche Hilfe , meine Form macht Ärger !

Beitrag von Mike62 »

Hallo,
danke für den Tipp, aber es wird mir nichts anderes übrig bleiben, als diese Form nochmal NEU zu schreiben. Ich dachte, da gibts bestimmt jemmanden, der das gleiche Problem
hatte ,und mir einen Tipp geben könnte. Aber bevor ich meine Nerven total kaputt mache, schreib ich lieber stück für stück nochmal NEU. Sollte ich es heraus finden, dann werde ich es sofort ins Forum schreiben. auch wenn ich einen groben Fehler entdecke, Gruß Mike

Benutzeravatar
Jorg3000
Lazarusforum e. V.
Beiträge: 364
Registriert: So 10. Okt 2021, 10:24
OS, Lazarus, FPC: Win64
Wohnort: NRW

Re: Ich brauche Hilfe , meine Form macht Ärger !

Beitrag von Jorg3000 »

Hallo!
Hast du in das Click-Ereignis eines SpeedButton schon mal ShowMessage('Hallo'); eingebaut, um zu sehen, ob das Ereignis reagiert?
Wenn ja, liegt das Problem auf jeden Fall in deinem Code. Greifst du dort vielleicht anstelle von » self « auf eine globale Form-Variable zu, also auf das falsche Fenster?
D.h. dein Programm arbeitet zwar, aber du kannst es nicht sehen.
Grüße, Jörg

Benutzeravatar
Mike62
Beiträge: 8
Registriert: Mo 20. Jan 2025, 21:41

Re: Ich brauche Hilfe , meine Form macht Ärger !

Beitrag von Mike62 »

Hallo,
ja das hab ich, siehe Code

Code: Alles auswählen

{$R *.lfm}

{ TDAusgabe }


procedure TDAusgabe.BitBtn4Click(Sender: TObject);
begin
  ShowMessage('Bin beim Speichern ....');                                                                   { dieser Schalter geht auf anhieb }
end;

procedure TDAusgabe.BitBtn9Click(Sender: TObject);
begin
  Close();
end;

procedure TDAusgabe.FormActivate(Sender: TObject);
begin
  If DAusgabe.Active = False then ShowMessage('FormActivate = Inaktiv')
  Else ShowMessage('FormActivate = Aktiv');
end;

procedure TDAusgabe.FormShow(Sender: TObject);
begin
  Schloss_ZU.Visible  :=True;           { Schloss ZU    }
  Schloss_AUF.Visible :=False;          { Schloss Offen }
  If DAusgabe.Active = False then ShowMessage('FormShow = Inaktiv')
  Else ShowMessage('FormShow = Aktiv');
end;


procedure TDAusgabe.Schloss_ZUClick(Sender: TObject);        
begin                                                                            { dieser Schalter ist das Problem }                                      
  // Schloss zu Klick                                                       [ danach geht alles normal        }
  Schloss_ZU.Visible := False;         { Schloss zu    }
  Schloss_AUF.Visible := True;         { Schloss Offen }
  // Security       := False;
end;

procedure TDAusgabe.Schloss_AUFClick(Sender: TObject);
begin
  // Schloss auf Klick
   Schloss_AUF.Visible := False;          { Schloss Offen }
   Schloss_ZU.Visible := True;            { Schloss zu    }
  // Security       := False;
end;


Das ist eine reine Test Form , um das Problem zu bekämpfen.
Was ich festgestellt habe ist, das die BitBtn Schalter auf anhieb funktionieren,
aber die ImageClick muss ich beim ersten mal 2x anklicken, danach geht alles normal.
Ich muss aber dazu sagen, das diese Form mit einen Doppelklick aufgerufen wird,
(von einen ListView) , vielleicht ist da das Problem

Benutzeravatar
Jorg3000
Lazarusforum e. V.
Beiträge: 364
Registriert: So 10. Okt 2021, 10:24
OS, Lazarus, FPC: Win64
Wohnort: NRW

Re: Ich brauche Hilfe , meine Form macht Ärger !

Beitrag von Jorg3000 »

Anstatt das modale Fenster mit Close() zu schließen, versuch es mal mit ModalResult:=mrOk;

Benutzeravatar
Mike62
Beiträge: 8
Registriert: Mo 20. Jan 2025, 21:41

Re: Ich brauche Hilfe , meine Form macht Ärger !

Beitrag von Mike62 »

Hallo,
geht auch nicht, da stimmt was anderes nicht. Auf alle fälle hab ich schon mal ein erfolg mit den BitBtn , die reagieren sofort mit nur einen Klick. Vorher hab ich die SpeedBtn benutzt, und die musste ich auch 2x anklicken. Bei diesen TestCode bin ich etwas verwirrt, wenn ich die Form aufrufe dann kommt als erster die Meldung >FormShow = Inaktiv<, dann erscheint das Fenster, und die Meldung >FormActive = Inaktiv< , dann nochmal >FormActive = Inaktiv<. Und immer das selbe ergebniss,
Die BitBtn reagieren auf einen Klick, und die ImageClick auf zweimal Klick. Jetzt sind meine Nerven am ende. :oops:
Anbei ein Bild von der Form mit den BitBtn und den beiden Schlösser.
Dateianhänge
AusgabeForm.jpg
AusgabeForm.jpg (77.64 KiB) 36861 mal betrachtet

Benutzeravatar
Mike62
Beiträge: 8
Registriert: Mo 20. Jan 2025, 21:41

Re: Ich brauche Hilfe , meine Form macht Ärger !

Beitrag von Mike62 »

Nochmal Hallo,
hab jetzt die Form ohne Doppelklick aufgerufen, und siehe da, es funktioniert. Wie kann das sein ?
Ich poste mal den Code vom Doppelklick.

procedure TForm1.ListView1DblClick(Sender: TObject);
Var i:Integer;
begin
DatenIndex := 0;
If ListView1.Items.Count-1 >=0 Then
For i := 0 to ListView1.Items.Count-1 Do
If ListView1.Items.Item.Focused = True Then
Begin
DatenIndex := StrToInt(ListView1.Items.Item.Caption);
TreeViewAuswahlZeiger := i;
end;
// ===========================================
// ----------- DatenIndex wurde ermittelt ----------------------
// ===========================================
If ListView1.Items.Count-1 = -1 then Exit; // Nur zur Sicherheit !
DatenAnzeige :=True;
// ***************************************
DAusgabe:=TDAusgabe.Create(self);
DAusgabe.ShowModal;
DAusgabe.Free;
// ***************************************
DatenAnzeige := False;
end;


Ich sehe da nichts ungewöhnliches, oder doch ?

Benutzeravatar
Jorg3000
Lazarusforum e. V.
Beiträge: 364
Registriert: So 10. Okt 2021, 10:24
OS, Lazarus, FPC: Win64
Wohnort: NRW

Re: Ich brauche Hilfe , meine Form macht Ärger !

Beitrag von Jorg3000 »

Könnte es sein, dass die Form 2x erzeugt wird, exakt übereinander liegend, so dass du beim ersten Close-Klick nur eins der beiden Fenster geschlossen hast und das zweite an gleicher Stelle noch offen blieb. :D

Benutzeravatar
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: Ich brauche Hilfe , meine Form macht Ärger !

Beitrag von af0815 »

Ich würde den LazLogger einbinden und mir die Aufrufe mitprotollieren lassen. Damit hat man Sicherheit, was wann und wie aufgerufen wird. In der Release kann man den LazLogger ja deaktivieren lassen.

Ich verwende den sehr extensiv in der Zeit, wo ich das Programm entwickle und lassen den im Release, wie auch die anderen Debuggereinstellungen deaktivieren.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Mike62
Beiträge: 8
Registriert: Mo 20. Jan 2025, 21:41

Re: Ich brauche Hilfe , meine Form macht Ärger !

Beitrag von Mike62 »

:( Hallo Jorg3000
konnte nicht feststellen, das er 2 Forms geöffnet hat, aber es hängt tatsächsich mit den Doppelklick zusammen , starte ich die Form gang normal mit

//
DAusgabe:=TDAusgabe.Create(self); { Neue Eingabe }
DAusgabe.ShowModal;
DAusgabe.Free;
//

dann geht alles Normal, brauche die Schlösser nur 1x anklicken.

Ruf ich aber die Form mit den Doppelklick auf , dann muss ich die Schlösser 2x anklicken.
Ganz erlich, ich bin am verzweifeln.
Hab das selbe Programm für Windows geschrieben, da funktioniert alles einwandfrei, jetzt auf Linux mit Lazarus hab ich brutale Probleme. Aber ich gebe nicht auf, bis ich eine Antwort gefunden habe. Ich muss mich bei Dir schon mal bedanken, dass Du versuchst mir zu helfen. Aber es muss eine lösung geben, da bin ich mir sicher. :(

charlytango
Beiträge: 1061
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: Ich brauche Hilfe , meine Form macht Ärger !

Beitrag von charlytango »

Mike62 hat geschrieben: Mi 22. Jan 2025, 15:29 Aber es muss eine lösung geben, da bin ich mir sicher.
Wir wollen dir ja helfen, aber Jänner ist üblicherweise der Monat wo unsere Glaskugeln beim Service sind. :-)

Du möchtest Hilfe zu einem spezifischen Problem, skizzierst dieses, aber ohne dass wir auch nur den Ansatz einer Chance haben dieses auch wirklich nachzuvollziehen. Wie denn auch, mit nur einem Codeschnipsel.
af0815 hat geschrieben: Di 21. Jan 2025, 16:41 Am meisten hilft, wenn man ein kompilierbares Projekt hat
Ich gebe zu, die Strategie ist meistens ziemlich nervig, aber in Wahrheit auch der einzige Weg.
Mach ein Rumpfprojekt in dem du genau diese eine Funktion nachbaust und lade sie hier hoch.
Dafür hat Lazarus auch gleich einen Menüpunkt parat (Project -Publish Project)

So kannst auch du diesen Aspekt in verschiedenen Betriebssystemen Testen und bewerten.
Und wir haben Source zum Testen. Im idealen Fall kommst du mit dieser Methode selber dahinter wo es klemmt. Aber wenn da zuviel Code in die Suppe spuckt suchst du seeeeehr lange

Benutzeravatar
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: Ich brauche Hilfe , meine Form macht Ärger !

Beitrag von af0815 »

Mike62 hat geschrieben: Mi 22. Jan 2025, 15:29 Ganz erlich, ich bin am verzweifeln.
Hab das selbe Programm für Windows geschrieben, da funktioniert alles einwandfrei, jetzt auf Linux mit Lazarus hab ich brutale Probleme. Aber ich gebe nicht auf, bis ich eine Antwort gefunden habe. Ich muss mich bei Dir schon mal bedanken, dass Du versuchst mir zu helfen. Aber es muss eine lösung geben, da bin ich mir sicher. :(
Ganz einfach, die Widgetsets im Hintergrund haben öfters mal komplett andere Eigenheiten, das du Probleme damit hast, wenn du die Applikation auf Multiumgebung umstellst ist mehr als normal. Ich selbst kenne das sehr gut :-) Meine Programme sind unter Windows, Linux (Debian, Ubuntu), Rasbian gelaufen.

Es könnte sein, das du damit Probleme hast, da du in einer Routine zur Doppelklickbearbeitung ein modales Fenster öffnest. Nicht das da die Verarbeitung (ev. auch Simulation) der Events auf Doppelklick hängen bleibt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 587
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon, Laz 4.1 Fpc 3.2.3 und allerlei mit FpcUpDeLuxe
Kontaktdaten:

Re: Ich brauche Hilfe , meine Form macht Ärger !

Beitrag von Niesi »

Mike62 hat geschrieben: Mi 22. Jan 2025, 15:29 :( Hallo Jorg3000
konnte nicht feststellen, das er 2 Forms geöffnet hat, aber es hängt tatsächsich mit den Doppelklick zusammen , starte ich die Form gang normal mit

//
DAusgabe:=TDAusgabe.Create(self); { Neue Eingabe }
DAusgabe.ShowModal;
DAusgabe.Free;
//

dann geht alles Normal, brauche die Schlösser nur 1x anklicken.

Ruf ich aber die Form mit den Doppelklick auf , dann muss ich die Schlösser 2x anklicken.
Ganz erlich, ich bin am verzweifeln.
Hab das selbe Programm für Windows geschrieben, da funktioniert alles einwandfrei, jetzt auf Linux mit Lazarus hab ich brutale Probleme. Aber ich gebe nicht auf, bis ich eine Antwort gefunden habe. Ich muss mich bei Dir schon mal bedanken, dass Du versuchst mir zu helfen. Aber es muss eine lösung geben, da bin ich mir sicher. :(
.

Ein Beispielprojekt ist vermutlich der einzige Weg, um da weiter zu kommen ...

(Falls Du nicht weißt, was damit gemeint ist, dann lass es uns wissen.)
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Benutzeravatar
Mike62
Beiträge: 8
Registriert: Mo 20. Jan 2025, 21:41

Re: Ich brauche Hilfe , meine Form macht Ärger !

Beitrag von Mike62 »

Hallo,
leider weiß ich es nicht, wie das geht, weil ich erst angefangen hab mit Linux Lazarus. Könnten Sie mir das Schritt für Schritt erklären, wie man ein Beispielprojekt erstellt ? Ich möchte unbediengt weiter kommen.
Ich hab schon sehr viele verbesserungen gemacht, 1000x besser als auf Windows. Die Daten scrollen wie Butter auf Linux, während auf Windows stotter Effekte statt finden. Ich benutze 8 verschiedene Rechner , plus QNAP als Server.

Antworten