Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - ComboBox bei LZ verschieben


recall - Mo 08.09.03 00:19
Titel: ComboBox bei LZ verschieben
Hallo,

Ich will während der LZ meine Kompos verschieben, habe folgendes gefunden:

Tryer hat folgendes geschrieben:
Wie immer die gleiche Lösung:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton; 
  Shift: TShiftState; X, Y: Integer); 
const 
  SC_DRAGMOVE = $F012
begin 
  Assert(Sender is TWinControl, 'SC_DRAGMOVE nur mit TWinControls !'); 
  ReleaseCapture; 
  TWinControl(Sender).Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0); 
end;


Die Funktion funzt nur leider ein bisschen schwer bei allen ComboBox-Kompos (ComboBox, DateTimePicker), da die kein OnMouseDown haben !!

Kann mir da jemand weiterhelfen ?


recall - Do 18.09.03 14:37

Hallo,

Vielleicht wirft jemand nochmal einen Blick darauf ??
Das ist wirklich wichtig für mich :!:

Ich habe außerdem noch weitere Probleme mit den Komponenten StringGrid und Button: Das StringGrid macht ein hässliches Flackern, wenn ich es zuletzt mit drag&drop durch klicken auf die freien Cells verschoben habe...

Aber hauptsächlich: Ich kann keine Buttons verschieben: sie werden einfach nur runtergedrückt ?!

Also, meine generelle Frage, wie kann ich es anstellen, dass eine Komponente keine Eingabe mehr akzeptiert außer Drag&Drop nach obiger Methode ? Oder anders: Wie kann ich Enabled:=False setzen, so dass meine Kopmos noch die OnMouseDown-NotifyEvent mitkriegen ??

Viele Grüsse.

P.S.: Mein obiges ComboBox-Problem besteht natürlich auch noch :( .


Tana´Ri - Do 18.09.03 15:00

MoveWindow(Win.Handle,Target_X,Target_Y,Width,Height,REPAINT);
^funktioniert (per button ausgelöst [test])

weiter Messages:

WM_WINDOWPOSCHANGING
WM_WINDOWPOSCHANGED
WM_MOVE

zum button onclick() routine, bzw. das was man dor normal so rein macht, würd ich erst beim mouseup auslöse sowie ne downstate bool wieder false setzen, beim mousedown diesen auf true und wenn dann ein mousemove folgt und downstate true ist wird der button bewegt.

zum stringgrid kann ich dir jetzt keine tipps geben

viel glück