![]() |
Memo größe zur Laufzeit ändern!
Hi leute!
wie kann ich vier Memoboxen, immer gleich groß auf einen Form zeigen! eGAL WIE GORß ICH Das fenster ziehe? |
Hi.
So ganz schlau werd ich aus der Frage zwar nicht, aber ich denke Du willst sowas ähnliches wie z.B. im Notepad machen: Das Memofeld ändert die Größe zusammen mit dem Hauptformular beim Ändern der Größe. Das geht ganz einfach: Du stellst im Designmodus erstmal ein, wie es denn sein soll. Dann änderst Du im Objektinspektor die Eigenschaft 'Anchor', und stellst dort alle vier Werte auf 'True'. Damit 'verankert' sich das Memofeld an allen vier Seiten des übergeordneten Controls (in dem Fall ja wohl das Hauptfenster) und sobald sich dessen Größe ändert ändert sich dann auch die Größe des Memofeldes. |
Doch dieses Soll mit 4 Memoboxen gleichzeitig passieren!
|
Hallo Chris,
dazu wirst du wohl (soweit ich das sagen kann) das onresize des Hauptformulars nehmen müssen und anhand der neuen Breite die Memos einzeln resizen. Angenommen die vier Memos sind von links nach rechts und von oben nach unten so durchnummeriert: 1 2 3 4 dann wirst du dem 1. memofeld beim resize keine neue position, sondern nur eine neue breite zuweisen müssen. Da die Breite und Höhe bei allen Memos ja gleich bleiben soll, sähe das ganze dann so aus:
Code:
memox.width:=(form1.width/2)- [linker rand + ((dist.zwischen linkem und rechtem memo)/2)];
Code:
für memo2 musst du auch die Position angleichen:
memox.height:=(form1.height/2)-[((dist.zwischen oberem und unterem memo)/2)+obererrand];
Code:
top entfällt.
memo2.left:=(form1.width/2)+((dist.zwischen linkem und rechtem memo)/2);
memo3(posi):
Code:
left bleibt gleich
memo3.top:=(form1.height/2)+((dist.zwischen oberem und unterem memo)/2);
memo4(top):
Code:
memo4(left):
memo4.top:=(form1.height/2)+((dist.zwischen oberem und unterem memo)/2);
Code:
ich hoffe das hilft weiter
memo4.left:=(form1.width/2)+((dist.zwischen linkem und rechtem memo)/2);
Gruß Jan |
hallo,
bei mir sieht der Code jetzt so aus:
Code:
memo1.width:=(form1.width div 2)-20;
memo1.height:=(form1.height div 2)-20; memo2.width:=(form1.width div 2)-20; memo2.height:=(form1.height div 2)-20; memo3.width:=(form1.width div 2)-20; memo3.height:=(form1.height div 2)-20; memo4.width:=(form1.width div 2)-20; memo4.height:=(form1.height div 2)-20; memo2.left:=(form1.width div 2)+10; memo3.top:=(form1.height div 2)+10; memo4.top:=(form1.height div 2)+10; memo4.left:=(form1.width div 2)+10; das klappt auch. Die Memos resizen sich sehr schön, aber komischerweise habe ich immer 2 scrolleisten, mit denen ich scrollen kann. wobei ich weiss, dass an den angaben die hier oben gemacht sind nichts falsch ist. ich habe die memos mit jeweils 10 px abstand zum formrand gesetzt. und der mittelabastand beträgt 20px. Dass die werte auch während dem ausführen korrekt sind sehe ich über diesen aufruf:
Code:
Die werte, die ich dabei bekomme sind genau die, die ich brauche, damit überall ein rand sein sollte, aber irgendwie ist dieser Rand überschritten, weil ich ja scrollbars bekomme. :(
showmessage(inttostr(form1.width)+' '+inttostr(memo1.left)+' '+inttostr(memo1.width)+' '+ inttostr(memo2.left)+' '+inttostr(memo2.width));
Hat da jemand einen Plan? BB Jan |
Problem gelöst:
Code:
procedure TForm1.FormResize(Sender: TObject);
begin memo1.width:=(form1.clientwidth div 2)-20; memo1.height:=(form1.clientheight div 2)-20; memo2.width:=(form1.clientwidth div 2)-20; memo2.height:=(form1.clientheight div 2)-20; memo3.width:=(form1.clientwidth div 2)-20; memo3.height:=(form1.clientheight div 2)-20; memo4.width:=(form1.clientwidth div 2)-20; memo4.height:=(form1.clientheight div 2)-20; memo2.left:=(form1.clientwidth div 2)+10; memo3.top:=(form1.clientheight div 2)+10; memo4.top:=(form1.clientheight div 2)+10; memo4.left:=(form1.clientwidth div 2)+10; end; |
Danke, hat super geklappt!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz