AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Memo größe zur Laufzeit ändern!

Ein Thema von Gast · begonnen am 6. Mär 2003 · letzter Beitrag vom 7. Mär 2003
Antwort Antwort
Gast
(Gast)

n/a Beiträge
 
#1

Memo größe zur Laufzeit ändern!

  Alt 6. Mär 2003, 12:41
Hi leute!

wie kann ich vier Memoboxen, immer gleich groß auf einen Form zeigen! eGAL WIE GORß ICH Das fenster ziehe?
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#2
  Alt 6. Mär 2003, 13:10
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.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Gast
(Gast)

n/a Beiträge
 
#3
  Alt 6. Mär 2003, 13:12
Doch dieses Soll mit 4 Memoboxen gleichzeitig passieren!
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#4
  Alt 6. Mär 2003, 14:05
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:
memox.height:=(form1.height/2)-[((dist.zwischen oberem und unterem memo)/2)+obererrand];
für memo2 musst du auch die Position angleichen:

Code:
memo2.left:=(form1.width/2)+((dist.zwischen linkem und rechtem memo)/2);
top entfällt.


memo3(posi):

Code:
memo3.top:=(form1.height/2)+((dist.zwischen oberem und unterem memo)/2);
left bleibt gleich


memo4(top):

Code:
memo4.top:=(form1.height/2)+((dist.zwischen oberem und unterem memo)/2);
memo4(left):

Code:
memo4.left:=(form1.width/2)+((dist.zwischen linkem und rechtem memo)/2);
ich hoffe das hilft weiter
Gruß
Jan
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#5
  Alt 6. Mär 2003, 15:35
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:
showmessage(inttostr(form1.width)+' '+inttostr(memo1.left)+' '+inttostr(memo1.width)+' '+ inttostr(memo2.left)+' '+inttostr(memo2.width));
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.
Hat da jemand einen Plan?
BB
Jan
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#6
  Alt 6. Mär 2003, 15:43
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;
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Gast
(Gast)

n/a Beiträge
 
#7
  Alt 7. Mär 2003, 16:09
Danke, hat super geklappt!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz