Form unter linux mehrfach hintereinander aufrufen

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
Antworten
Eb
Lazarusforum e. V.
Beiträge: 238
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Form unter linux mehrfach hintereinander aufrufen

Beitrag von Eb »

Hallo,

Ich möchte einen kleinen wizard machen, d.h. ein Formular aufrufen,
der user gibt dann hier was ein und klickt auf weiter,
das Formular wird beendet, und danach mit modifiziertem Inhalt wieder aufgerufen.
In diesem Formular muss ich die Schriftart der Steuerelemente vergrössern, damit es aus 4 Meter Entfernung noch gesehen werden kann.



Problem: beim ersten Aufruf der form ist noch alles OK,
beim zweiten Aufruf der form wird die Schrift bei einigen Steuerelemente kleiner.


Dies passiert unter opensuse 10.3 mit gkt oder gtk2.
Unter windows passiert es nicht, hier sind die Steuerelemente beim zweiten Aufruf unverändert.

Aufrufen der Form mache ich so:

Code: Alles auswählen

procedure TForm1.btn_startClick(Sender: TObject);
begin
   frm_wizard.ShowModal;
   frm_wizard.ShowModal;
end;


Ich habe schon versucht die Schriftgrösse im code zu definieren, das hatte keinen Effekt.

Was könnte ich tun, damit die Schriftgrösse immer gleich bleibt?

Ich habe euch mal den ganzen Code angehängt.

Gruss
Eberhard
Dateianhänge
wizard.tar.gz
(96.6 KiB) 55-mal heruntergeladen

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

mach es doch einfach es mit einem TNotebook, dann kannst du nach dem Weiter klick einfach zum nächsten Tab wechseln.
Wenn du willst kannst du ja auch die Tableiste ausblenden, wenn du willst dass der Benutzer nicht eigenständig hin und her gehen kann....
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

Eb
Lazarusforum e. V.
Beiträge: 238
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Beitrag von Eb »

Das TNotebook hat bei miir die unschöne Eigenschaft, dass z.B. Edit-Felder im der Entwicklungsumgebung nicht richtig angezeigt werden, sondern nur über den Objekt-Inspektor editierbar sind. - Wäre aber nicht so schlimm.

Das Grundproblem bleibt mir aber erhalten.
Beim ersten Aufruf der Form ist alles in Ordnung.

Wird das Fenster aber im späteren Verlauf des Programmes nochmal aufgerufen, ist dann die Schriftart wieder kleiner ....

Noch 'ne andere Idee vielleicht?

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

Also bei mir klappt problemlos:

frm_wizard.ShowModal;
frm_wizard.Edit1.Font.Size:=40;
frm_wizard.ShowModal;



du musst anscheinend eine andere font größe wählen, da ansonsten die werte nicht mehr neu gesetzt werden.
Es wir ja einfach dann wenn neuer wert = alter wert wird ja einfach aus der setSize rausgesprungen.

PS: Aber du hast recht, das ist natürlich ein Fehler von der LCL.
hmmm mit show, klappt es problemlos. Es scheint an showmodal, oder closemodal zu liegen
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

wieso schließt du das fenster überhaupt? verändere doch einfach den inhalt darin ohne es zu schließen
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

TNotebook würd ich dafür nicht evrwenden einfache Panels tuns auch. Auf jeden fall scheints ein Bug zu sein und sollte sich im Bugtracker wiederfinden.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Eb
Lazarusforum e. V.
Beiträge: 238
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Beitrag von Eb »

@alexander
Funktioniert beides !

Wenn ich vor dem Aufruf die Property Font.Size setze, kann ich showmodal verwenden.

Wenn ich das Fenster mit hide verstecke, kann ich show verwenden und da funktioniert es sowieso.


@christian
ich versuche mal es im bugtracker zu finden, und evtl einzutragen.


Vielen Dank,

Eberhard

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

schön wenn ich helfen konnte ;-)

Gruß Alexander
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

Eb
Lazarusforum e. V.
Beiträge: 238
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Beitrag von Eb »

Leider zu früh gefreut ...

Der Test mit showmodal size 40 funktioniert - aber nur 1 mal.

Beim nächsten Aufruf ist die Schriftgrösse wieder weg.

Genauso ist es, wenn der 'start'-Buttons erneut angeklickt wird.

Code: Alles auswählen

procedure TForm1.btn_startClick(Sender: TObject);
begin
 
frm_wizard.Showmodal;
   frm_wizard.Edit1.Font.Size:= 40;
   frm_wizard.Showmodal;
   frm_wizard.Edit1.Font.Size:= 40;
   frm_wizard.Showmodal;
end;



Mit Schriftgrösse 25 geht es überhaupt nicht.


Ich habe es im Bugtracker eingetragen, (Item: 0011935) es wurde mit Target => 1.2 eingestuft .

So lange möchte ich nicht warten, und auf showmodal kann ich nicht
in allen Fällen verzichten.
Ich habe deshalb auf einem Form, das mit showmodal aufgerufen wird, Steuerelemente dynamisch erzeugt,
bei denen kann man dann font.size setzen!

Hier bin ich noch auf ein anderes Problem gestossen, aber dafür mache ich einen neuen Thread auf.

Eberhard

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

ja natürlich, du misst die schrfitgröße ÄNDERN. d.h. auf 41 oder auf 39 setzten
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

Eb
Lazarusforum e. V.
Beiträge: 238
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Beitrag von Eb »

Ist ja eigenartig, aber es funktioniert !

Wenn ich also schriftgrösse 25 haben möchte, ändere ich die Grösse einfach 2 mal hintereinander und rufe anschliessend die form mit showmodal auf:

Code: Alles auswählen

frm_wizard.Edit1.Font.Size:= 30;
   frm_wizard.Edit1.Font.Size:= 25;
   frm_wizard.ShowModal;


Ich würde sagen, super workaround ;)

Dank dir,

Eberhard

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

das problem ist dass die Fontgröße zurückgesetzt wird. Wo ist sehr fraglich!
Auf jeden fall denkt er ja dass die fontsize noch die alte (große) ist:

Code: Alles auswählen

procedure TControl.SetFont(Value: TFont);
begin
  if FFont.IsEqual(Value) then exit// hier scheint er ja zu exiten
  FFont.Assign(Value);
  Invalidate;
end;


Das ist die isequal function:

Code: Alles auswählen

function TFont.IsEqual(AFont: TFont): boolean;
begin
  if (AFont = Self) then Exit(true);
  if (AFont=nil)
  or (CharSet<>AFont.CharSet)
  or (Color<>AFont.Color)
  or (PixelsPerInch<>AFont.PixelsPerInch)
  or (Size<>AFont.Size)
  or (Height<>AFont.Height)
  or (Name<>AFont.Name)
  or (Pitch<>AFont.Pitch)
  or (Style<>AFont.Style) then
    Result := False
  else
    Result := True;
end;


Ich denke das Problem könnte durch löschen von:

Code: Alles auswählen

if (AFont = Self) then Exit(true);
behoben werden, ist aber NICHT! Die Ursache!
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

ahhh:
http://bugs.freepascal.org/view.php?id=11935
Du hast ihn eingetragen. Super!
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

Antworten