Showmodal

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
HaseCaesar
Beiträge: 27
Registriert: Mi 2. Apr 2014, 09:47

Re: Showmodal

Beitrag von HaseCaesar »

wp_xyz hat geschrieben:ModalResult des ok-Buttons = mrOK? ModalResult des Cancel-Buttons = mrCancel?

ist doch ok, oder?

ja. Aber da FKorrigieren eine globale Variable ist, solltest du sie nach dem Zerstören des Formulars noch auf nil setzen, oder gleich FreeAndNil(FKorrigieren) verwenden


das mache ich doch am ende der routine im hauptformular. allerdings wird der code nach dem modalresult NIE ausgeführt, sondern erst beim beenden des proggis (fhaupt).

DAS ist ja das Rätsel die ganze Zeit!

wp_xyz
Beiträge: 4891
Registriert: Fr 8. Apr 2011, 09:01

Re: Showmodal

Beitrag von wp_xyz »

das mache ich doch am ende der routine im hauptformular.

(1) Zumindest nicht beim cancel-Button. Wenn der noch mrNone als Modalresult hat, passiert dort beim Klick gar nichts.
(2) Wieso im Hauptformular? Du meinst wahrscheinlich "am Ende der Routine im Korrigieren-Formular".

Falls der Cancel-Button auf mrCancel gesetzt ist und trotzdem nichts passiert, würde ich das Formular von Grund auf neu aufbauen: Ein leeres Formular hinzufügen mit zwei Buttons, OK und Cancel, so wie in meiner Demo. Dieses Formular wird vom Hauptformular aus geöffnet. Funktionieren OK und Cancel? Wenn ja, sukzessive die Funktionalität des bisherigen Korrigieren-Formulars in das neue übernehmen und schauen, wann der Fehler auftritt.

baumina
Beiträge: 152
Registriert: Mo 3. Feb 2014, 14:07
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Showmodal

Beitrag von baumina »

Das ganze Zeugs im FormClose verstehe ich nicht und würde darauf komplett verzichten.
.

HaseCaesar
Beiträge: 27
Registriert: Mi 2. Apr 2014, 09:47

Re: Showmodal

Beitrag von HaseCaesar »

wp_xyz hat geschrieben:ModalResult des ok-Buttons = mrOK? ModalResult des Cancel-Buttons = mrCancel?

ist doch ok, oder?

ja. Aber da FKorrigieren eine globale Variable ist, solltest du sie nach dem Zerstören des Formulars noch auf nil setzen, oder gleich FreeAndNil(FKorrigieren) verwenden


das mit NIL nach FREE baue ich noch ein. Dein Vorschlag ging mir auch gerade durch den Kopf mit mrCancel und mrOK. Teste ich eben.

seltsam, seltsam. habe mrCancel und mrOK gesetzt. Das Formular schließt sich nicht. Wenn ich es mit Klick oben rechts auf das X schließe wieder dasselbe:

...

fkorrigieren.tegenre.text := qu.fieldbyname ('genre').asstring;
fhinzufuegen.meinfo.text := qu.FieldByName('info').asstring;
finally
end;
abgebrochen := (fhinzufuegen.showmodal <> mrOK);

if abgebrochen then Hier ist der Breakpoint gesetzt
begin
FHinzufuegen.free;
exit;
end;

findet die programmausführung an der breakpointstelle erst statt, wenn ich das Hauptform schließe.

Ich weiß mir keinen Rat mehr. Wieso klappte das Testproggi von wp_xyz?

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Showmodal

Beitrag von hde »

baumina hat geschrieben:Das ganze Zeugs im FormClose verstehe ich nicht und würde darauf komplett verzichten.

dem kann ich nur voll zustimmen
HaseCaesar hat geschrieben:Ich weiß mir keinen Rat mehr. Wieso klappte das Testproggi von wp_xyz?

weil das testprog in Ordnung ist und deins offenbar nicht.
Nimm den Highlighter oder zipps damit man schnell mal was checken knn
hde

HaseCaesar
Beiträge: 27
Registriert: Mi 2. Apr 2014, 09:47

Re: Showmodal

Beitrag von HaseCaesar »

hde hat geschrieben:
baumina hat geschrieben:Das ganze Zeugs im FormClose verstehe ich nicht und würde darauf komplett verzichten.

dem kann ich nur voll zustimmen
HaseCaesar hat geschrieben:Ich weiß mir keinen Rat mehr. Wieso klappte das Testproggi von wp_xyz?

weil das testprog in Ordnung ist und deins offenbar nicht.
Nimm den Highlighter oder zipps damit man schnell mal was checken knn
hde


also ich habe die Buttons Abbruch und OK mit mrCancel und mrOK versehen. nun schließt sich FKorrigieren nicht mehr.
Keine Ahnung, warum.

Das Testproggi von wp_xyz hat ja funktioniert.

Um das Problem noch einmal zu verdeutlichen:

ich rufe ein form modal auf und erwartete von meinem proggi, daß der code nach dem .showmodal weiter abgearbeitet wird.

DEM IST LEIDER NICHT SO! Ob ich ein Form erzeuge und anschließend kille, oder ob das Form dauerhaft existiert sollte doch nebensächlich sein.
Das Form sollte sich bei modalresult = mrOK oder mrCancel schließen - das ist das eine.
Und das zweite ist: der quellcode sollte nach dem .showmodal weiter abgearbeitet werden. Das ist ebenfalls nicht der Fall.

Und als sei das nicht schon alles merkwürdig genug springt die Programmausführung an genau die Stelle, wenn ich das Programm schließe.
So ein Verhalten habe ich noch nie gehabt - und ich habe schon sehr oft mit .showmodal gearbeitet. Bin ja fast 30 Jahre Delphi-Programmierer.

Das Problem muß sich woanders befinden. Ich werde jetzt, wie vorgeschlagen, das FKorrigieren umbenennen und mit einem neuen Formular beginnen und Schritt für Schritt die Funktionalität übertragen. Anders werde ich wohl nicht herausfinden, wo das Problem liegt. Ist zwar eine Menge Arbeit, aber es muß ja weitergehen.

Noch eine Frage zum Schluß (ich werde natürlich über den Ausgang meiner Bemühungen berichten): kann es sein, daß ich in den Eigenschaften von FKorrigieren im Objekt-Inspektor was eingestellt habe, was zu meinem Problem führt?

An alle, die sich bisher (und zukünftig) für mein Problem interessier(t)en - vielen Dank für die vielen Vorschläge und die superschnellen Antworten.

LG
HC

HaseCaesar
Beiträge: 27
Registriert: Mi 2. Apr 2014, 09:47

Re: Showmodal

Beitrag von HaseCaesar »

So. Allmählich komme ich an den Punkt, das Projekt einzustellen.

Ich habe das alte FKorrigieren umbenannt und aus dem Projekt entfernt.
Habe ein neues Form erstellt und FKorrigieren genannt.

Darauf habe ich lediglich die beiden Buttons Abbruch und OK mit den entsprechenden Modalresult-Werten versehen platziert.

Und was passiert? Nach wie vor dasselbe!

Das neue, fast leere Form wird angezeigt und keinerlei Reaktion der Buttons. Ich muß es oben rechts mit Klick auf das X schließen.
Und wieder läuft das Proggi nicht nach .showmodal weiter, sondern landet dort erst nach dem Schließen des Haupt-Forms.

Also kann das Problem nicht in FKorrigieren liegen, sondern muß sich in FHaupt befinden. ABER WO?

Das alles jetzt neu zu bauen ist so gut wie unmöglich, denn im Hauptform sind jede Menge Elemente mit noch mehr Ereignissen.
Das läßt sich nicht mal so übertragen.

Hat noch jemand eine Idee?

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Showmodal

Beitrag von Michl »

HaseCaesar hat geschrieben:Hat noch jemand eine Idee?
Ja, ich würde mich hde anschließen, packe doch das ganze Projekt per Zip und lade es hier hoch. Alles andere ist nur fischen in trüben Wasser.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

HaseCaesar
Beiträge: 27
Registriert: Mi 2. Apr 2014, 09:47

Re: Showmodal

Beitrag von HaseCaesar »

Michl hat geschrieben:
HaseCaesar hat geschrieben:Hat noch jemand eine Idee?
Ja, ich würde mich hde anschließen, packe doch das ganze Projekt per Zip und lade es hier hoch. Alles andere ist nur fischen in trüben Wasser.


das sagst du so leicht. habe ich kein problem mit. nur: was ist mit der sqlconn komponente? die verbindet mit einer datenbank.

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Showmodal

Beitrag von Michl »

Am besten, Du schmeißt alles raus, was nicht unbedingt zur Darstellung des Problems benötigt wird. Falls das für Dich ein zu hohen Aufwand bedeutet, kannst Du auch das Projekt, so wie es ist posten, die meisten, die versucht haben, Dir hier zu helfen, können auch SQL lesen und könnten ein möglichen Verursacher dieses Fehlverhaltens möglicherweise auch so (ohne tatsächlichen Start Deines Programms) ausfindig machen.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

HaseCaesar
Beiträge: 27
Registriert: Mi 2. Apr 2014, 09:47

Re: Showmodal

Beitrag von HaseCaesar »

Michl hat geschrieben:Am besten, Du schmeißt alles raus, was nicht unbedingt zur Darstellung des Problems benötigt wird. Falls das für Dich ein zu hohen Aufwand bedeutet, kannst Du auch das Projekt, so wie es ist posten, die meisten, die versucht haben, Dir hier zu helfen, können auch SQL lesen und könnten ein möglichen Verursacher dieses Fehlverhaltens möglicherweise auch so (ohne tatsächlichen Start Deines Programms) ausfindig machen.


ich zweifel ja nicht an den fähigkeiten der user ist (bezüglich sql). ich meine nur, daß das proggi sich nicht compilieren läßt, weil die hinterlegte db nicht verfügbar ist.

ich werde jetzt noch einen versuch starten, indem ich das FHaupt umbenenne und dort das showmodal einbaue.

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Showmodal

Beitrag von Michl »

HaseCaesar hat geschrieben: ich meine nur, daß das proggi sich nicht compilieren läßt,
Ich meinte, dass das zu 80%iger Wahrscheinlichkeit gar nicht notwendig ist, sondern dass man aus dem Quellcode einen möglichen Verursacher lesen könnte :wink:

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

HaseCaesar
Beiträge: 27
Registriert: Mi 2. Apr 2014, 09:47

Re: Showmodal

Beitrag von HaseCaesar »

Michl hat geschrieben:
HaseCaesar hat geschrieben: ich meine nur, daß das proggi sich nicht compilieren läßt,
Ich meinte, dass das zu 80%iger Wahrscheinlichkeit gar nicht notwendig ist, sondern dass man aus dem Quellcode einen möglichen Verursacher lesen könnte :wink:


ok. ich bin erst seit gestern hier registriert. hatte schon immer mit boards schwierigkeiten. bin erstaunt, daß ich hier relativ gut klar komme.

wie ich allerdings eine zip-datei anhänge, ist mir derzeit noch nicht klar.

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Showmodal

Beitrag von Michl »

Einfach unterhalb der Eingabemaske (Eingabefeld) befindet sich ein Reiter Dateianhang hochladen, diesen auswählen, mit Durchsuchen eine Datei auswählen und Datei hinzufügen klicken - thats it.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

HaseCaesar
Beiträge: 27
Registriert: Mi 2. Apr 2014, 09:47

Re: Showmodal

Beitrag von HaseCaesar »

Michl hat geschrieben:Einfach unterhalb der Eingabemaske (Eingabefeld) befindet sich ein Reiter Dateianhang hochladen, diesen auswählen, mit Durchsuchen eine Datei auswählen und Datei hinzufügen klicken - thats it.


danke für den tip. mache ich doch glatt :lol:

nun bin ich ja mal gespannt. das archiv enthält nun das NEUE FKorrigieren mit lediglich 2 Buttons - funktioniert ebenfalls nicht.
Dateianhänge
FilmDBDB.tar.gz
(7.66 MiB) 79-mal heruntergeladen

Antworten