[GELÖST] Dynamisches SynMemo Anchors Problem

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

[GELÖST] Dynamisches SynMemo Anchors Problem

Beitrag von compmgmt »

Ich habe ein Problem. Ich habe ein dynamisch erstelltes SynMemo in einem TabSheet. Dieses liegt natürlich in einem PageControl. Ich habe auf das SynMemo Anchors gesetzt, allerdings funktionieren diese nur bei dem ersten erstellten Memo und TabSheet, beim verändern der Fenstergröße ändert sich die Größe des TabSheets, aber nicht die des SynMemos (außer eben beim ersten erstellen).

OS: Windows XP SP3
Laz-Ver: 1.4.0

Code: Alles auswählen

NewPage := TTabSheet.Create(self);
  with NewPage do begin
    Parent := PC_Main;
    Name := 'PAGE' + IntToStr(PageCount);
    Anchors := [akTop,akLeft,akRight,akBottom]; // kann ich auch weglassen kommt auf das gleiche drauf an
    OnShow := @PageClick;
    Cursor := crHandPoint; // Damit ich erkenne ob sich die Größe des TabSheets ändert, was sie tut
	end;
  NewSynM := TSynMemo.Create(self);
  with NewSynM do begin
    Parent := NewPage;
    Name := 'SYNM' + IntToStr(PageCount);
    Width := PC_Main.Width - 6; // PC_Main ist das PageControl
    Height := PC_Main.Height - 24;
    Anchors := [akTop,akLeft,akRight,akBottom];
    Text := '';
    OnChange := @synmChange;
    Hint := 'Unbenannt';
	end;
Vielen Dank für eine Antwort im Voraus.

Mit freundlichen Grüßen
compmgmt
Zuletzt geändert von compmgmt am Di 19. Jan 2016, 22:41, insgesamt 1-mal geändert.

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

martin_frb
Beiträge: 586
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: Dynamisches SynMemo Anchors Problem

Beitrag von martin_frb »

Zunaechst mal, das hat wahrscheinlich nix mit SynMemo zu tun, und duerfte auch mit panel, memo oder .... passieren.

Off topic:
http://wiki.lazarus.freepascal.org/Laza ... Deprecated
SynMemo ist veraltet.

Nicht getestet, aber ich vermute:
Jedes tabsheet bleibt auf seiner anfangs-groesse, bis es das erste mal sichtbar wird. (Nehmen wir als Beispiel 200x100)

Wenn das PageControl eine andere Groesse hat (500x400)

Code: Alles auswählen

Width := PC_Main.Width - 6; // PC_Main ist das PageControl
bedeutet das memo wird viel groesser als das sheet.

Allerdings wuerde ich dann erwarten, das das memo diese uebergroesse (oder untergroesse) relative behaelt. Wenn das nicht der Fall ist, dann ist da noch ein anderes Problem.

Auf jeden fall, die Groesse des Memo relativ zum sheet setzen

Code: Alles auswählen

Width := NewPage.Width - 6; 

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: Dynamisches SynMemo Anchors Problem

Beitrag von compmgmt »

Funktioniert leider auch nicht... ):

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

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

Re: Dynamisches SynMemo Anchors Problem

Beitrag von wp_xyz »

Ich glaube, sowas ähnliches hatte ich auch schon mal, hat nichts mit SynMemo zu tun. Offenbar muss der Parent des Controls mit den gesetzten Anchors sichtbar sein, damit die Anchors aktiv werden. Setze NewPage.Visible := true bevor das SynMemo erzeugt wird.

Alternativ kannst du statt der Anchors auch das Align des SynMemo auf alClient setzen - das geht immer, auch bei unsichtbarem Parent (zumindest bei Win7, Laz trunk/fpc 3)

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: Dynamisches SynMemo Anchors Problem

Beitrag von theo »

Ja,

Code: Alles auswählen

Align:=alClient;
löst das Problem.
Bug bei Anchors auf Win32?
Auf GTK2 gibt es das Problem übrigens nicht.

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: Dynamisches SynMemo Anchors Problem

Beitrag von compmgmt »

Mit Align klapp es.

Vielen Dank :D

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

Antworten