Autor Beitrag
JRegier
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Fr 20.05.05 12:46 
Hallo, ich habe eine Komponente in Panel gelegt den ich auf AutoSize := True gesetzt
habe. Und nun habe ich für die Komponente folgendes:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure OnMouseDown(..);
begin
  OldWidth := Komp.Width;
  OldHeight := Komp.Height;
  DownX := X;
  DownY := Y;
end;

procedure OnMouseMove(..);
begin
  Komp.Width := X - DownX + OldWidth;
  Komp.Height := Y - DownY + OldHeight;
end;


Aber wenn ich die größe ändere dann flatert es hin und her weil ja das X dadurch ständig ändert! Wie tue ich das abfangen? das die Veränderte differenz mit reingerechnet wird
und die Komponente sich ruhig verhält, ohne das jetzt die Komponente in der Größe explosionsartig anwächst?

Moderiert von user profile iconmatze: Code- durch Delphi-Tags ersetzt.
MrFox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 208

WIN 2000 Professional, Ubuntu 5.10
D3 Prof, D7 Pers, D2005 Pers, Java (Eclipse)
BeitragVerfasst: Fr 20.05.05 16:06 
Also ich habs mal bei mir ausprobiert...

So funktionierts bei mir Perfekt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
    down := true
end;


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
down := false;
end;


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if down = false then exit;
Panel1.Height := Y;
Panel1.Width := X;
end;


Wobei Panel1 natürlich die zu verändernde Komponente ist und down eine globale Boolean-Variable.
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Fr 20.05.05 17:49 
user profile iconMrFox hat folgendes geschrieben:


Wobei Panel1 natürlich die zu verändernde Komponente ist und down eine globale Boolean-Variable.


Ist klar Danke ich werds versuchen! wobei bei mir ich die Komponente im Panel verändere!
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Sa 21.05.05 00:07 
user profile iconJRegier hat folgendes geschrieben:
user profile iconMrFox hat folgendes geschrieben:


Wobei Panel1 natürlich die zu verändernde Komponente ist und down eine globale Boolean-Variable.


Ist klar Danke ich werds versuchen! wobei bei mir ich die Komponente im Panel verändere!


Ach ich habs mein Problem war das ich während der Größenänderung die Componenten immer wieder neu anordne also die benachbarten Komponeten! Ich hab jetzt einfach nach der Größenänderung
die Komponenten in OnMouseUp angeordnet!
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: So 22.01.06 09:45 
user profile iconMrFox hat folgendes geschrieben:
Also ich habs mal bei mir ausprobiert...

So funktionierts bei mir Perfekt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if down = false then exit;
Panel1.Height := Y;
Panel1.Width := X;
end;


Wobei Panel1 natürlich die zu verändernde Komponente ist und down eine globale Boolean-Variable.


Aber wie geht's denn nun wenn ich die Componente nach links hin vergrößern will? So funktioniert's doch nicht!
MrFox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 208

WIN 2000 Professional, Ubuntu 5.10
D3 Prof, D7 Pers, D2005 Pers, Java (Eclipse)
BeitragVerfasst: So 22.01.06 19:04 
user profile iconJRegier hat folgendes geschrieben:

Aber wie geht's denn nun wenn ich die Componente nach links hin vergrößern will? So funktioniert's doch nicht!


Wenn MouseDown im oberen linken Eck war ((X < 10)and(Y < 10)) dann zusätzlich zur Vergrößerung die Koordinaten um die gleiche Anzahl an Pixeln wie die Komponente vergrößert wird zurückverschieben.

_________________
Das Leben auf der Erde mag zwar teuer sein, aber eine jährliche Rundreise um die Sonne ist gratis mit dabei.