![]() |
Edit1 und Edit2 proportional ändern
Liste der Anhänge anzeigen (Anzahl: 1)
Hi
ich möchte die Image Grösse proportional ändern Edit1 : W1 Edit2: H1 Nun möchte ich in Edit1OnChange den Wert in Edit2 Proportional ändern Wie kann ich das machen ? H2 : Round( H1*W2 / W1 ) |
Dieses Thema wurde am "10. Apr 2011, 17:30 Uhr" von "Matze" aus dem Forum "Programmieren allgemein" in das Forum "GUI-Design mit VCL / Qt / Common Controls" verschoben.
|
AW: Edit1 und Edit2 proportional ändern
Du brauchst lediglich die Größen (Breite und Höhe) von vorher. Dann kannst du über das Verhältnis von vorher zu nachher, z.B. bei der geänderten Breite den Multiplikator für (in diesem Beispiel) die Höhe errechnen:
Code:
Daraus resultiert aber die Frage, warum du deine Formel nicht einfach ausprobiert hast? Du hättest ziemlich schnell mit ein paar Testwerten gesehen, ob es geklappt hätte oder eben nicht.
Höhe_nachher = Breite_nachher / Breite_vorher * Höhe_vorher
|
AW: Edit1 und Edit2 proportional ändern
Problem gelöst
Delphi-Quellcode:
Warum ich if ((CheckBox1 ... rein gemacht habe, ist schon klar :wink:
procedure TForm1.Edit1Change(Sender: TObject);
begin NeueBreite:=StrToInt(Edit1.Text); AlteBreite:=Image1.width; AlteHoehe:=Image1.Height; if ((CheckBox1.Checked)and (edit1.Focused) ) or ((CheckBox1.Checked) and (UpDown1.Focused)) then begin Edit2.Text:=IntToStr(Round( NeueBreite * AlteHoehe /AlteBreite)); end; |
AW: Edit1 und Edit2 proportional ändern
Zitat:
Nachtrag:
Delphi-Quellcode:
Das kann man verkürzen zu:
if ((CheckBox1.Checked)and (edit1.Focused) ) or
((CheckBox1.Checked) and (UpDown1.Focused)) then
Delphi-Quellcode:
If CheckBox1.Checked and (Edit1.Focused or UpDown1.Focused) then
|
AW: Edit1 und Edit2 proportional ändern
Zitat:
Delphi-Quellcode:
.
if CheckBox1.Checked and (edit1.Focused or UpDown1.Focused) then
Und warum die lokalen Variablen (NeueBreite, AlteBreite, AlteHoehe) global deklariert sind, auch nicht.
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
begin if CheckBox1.Checked and (Sender = Edit1) then Edit2.Text := IntToStr(Round(StrToInt(Edit1.Text) * Image1.Height / Image1.Width)); if CheckBox1.Checked and (Sender = Edit2) then Edit1.Text := IntToStr(Round(StrToInt(Edit2.Text) * Image1.Width / Image1.Height)); end; |
AW: Edit1 und Edit2 proportional ändern
Zitat:
Die Abkürzung habe ich echt nicht aufgepasst ;) Ich finde so ist am kürzesten :
Delphi-Quellcode:
:thumb:
if CheckBox1.Checked and (Sender = Edit1) then
|
AW: Edit1 und Edit2 proportional ändern
Das mit dem "0" verhindern ist ja ganz einfach, nämlich mit 2 If-Strukturen.
Zu dem Spin-Edit: In #1 (siehe Anhang) verwendest du das Delphi-SpinEdit. Jetzt schreibst du von einem normalen Edit-Feld. Das ist ganz schön verwirrend. Bernhard |
AW: Edit1 und Edit2 proportional ändern
Stimmt, mit SpinEdit, kann man das Problem von /0 verhindern
:) Aber Nur wenn man Updown von SpinEdit verwendet sonst kann man 0 eintippen obwohl SpinEdit Min-Value 1 !!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 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