AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Edit1 und Edit2 proportional ändern

Ein Thema von thomas2009 · begonnen am 10. Apr 2011 · letzter Beitrag vom 11. Apr 2011
Antwort Antwort
thomas2009
(Gast)

n/a Beiträge
 
#1

Edit1 und Edit2 proportional ändern

  Alt 10. Apr 2011, 15:27
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 )
Miniaturansicht angehängter Grafiken
proportional_resize.jpg  

Geändert von thomas2009 (10. Apr 2011 um 15:46 Uhr)
  Mit Zitat antworten Zitat
10. Apr 2011, 16:30
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.
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#3

AW: Edit1 und Edit2 proportional ändern

  Alt 10. Apr 2011, 21:49
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:
Höhe_nachher = Breite_nachher / Breite_vorher * Höhe_vorher
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.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)

Geändert von s.h.a.r.k (10. Apr 2011 um 21:55 Uhr)
  Mit Zitat antworten Zitat
thomas2009
(Gast)

n/a Beiträge
 
#4

AW: Edit1 und Edit2 proportional ändern

  Alt 11. Apr 2011, 15:55
Problem gelöst
Delphi-Quellcode:
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;
Warum ich if ((CheckBox1 ... rein gemacht habe, ist schon klar
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Edit1 und Edit2 proportional ändern

  Alt 11. Apr 2011, 15:59
Delphi-Quellcode:
[...]
StrToInt(Edit1.Text);
[...]
Ist das nicht ein SpinEdit? Wieso nutzt du dann Text?


Nachtrag:
Delphi-Quellcode:
if ((CheckBox1.Checked)and (edit1.Focused) ) or
   ((CheckBox1.Checked) and (UpDown1.Focused)) then
Das kann man verkürzen zu:
If CheckBox1.Checked and (Edit1.Focused or UpDown1.Focused) then
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.

Geändert von Deep-Sea (11. Apr 2011 um 16:09 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.112 Beiträge
 
Delphi 12 Athens
 
#6

AW: Edit1 und Edit2 proportional ändern

  Alt 11. Apr 2011, 16:25
Zitat:
Delphi-Quellcode:
if ((CheckBox1.Checked)and (edit1.Focused) ) or
   ((CheckBox1.Checked) and (UpDown1.Focused)) then
Warum es aber zweimal drin ist, ist nicht klar.
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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
thomas2009
(Gast)

n/a Beiträge
 
#7

AW: Edit1 und Edit2 proportional ändern

  Alt 11. Apr 2011, 17:27

Ist das nicht ein SpinEdit? Wieso nutzt du dann Text?
Was meinst Du mit SpinEdit !? Ich verwende normale TEdit.


Die Abkürzung habe ich echt nicht aufgepasst
Ich finde so ist am kürzesten :
if CheckBox1.Checked and (Sender = Edit1) then

Geändert von thomas2009 (11. Apr 2011 um 19:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#8

AW: Edit1 und Edit2 proportional ändern

  Alt 11. Apr 2011, 19:54
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
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
thomas2009
(Gast)

n/a Beiträge
 
#9

AW: Edit1 und Edit2 proportional ändern

  Alt 11. Apr 2011, 20:19
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 !!!

Geändert von thomas2009 (11. Apr 2011 um 21:02 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 18:14 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