Autor Beitrag
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Mo 24.04.06 22:13 
Hallo!

Ich habe wieder eine Frage an euch. Ich selektiere ein Item in einer CheckListBox und möchte nun, dass man den Text in einem Edit bearbeiten kann. Dazu möchte ich das Edit genau über die markierte Zeile legen. Wie errechne ich die X - und Y-Position dieser Zeile?

Das Edit erreicht man über ein Popup-Menü.
Ich habe versucht, mit ScreenToClient(PopupMenu1.PopupPoint).X und ScreenToClient(PopupMenu1.PopupPoint).Y weiter zu kommen, ist aber nicht zufriedenstellend.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Di 25.04.06 00:12 
Hallo,

versuchs mal damit:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var aRect : TRect;
    aPoint : TPoint;
begin
  aRect := CheckListBox1.ItemRect(CheckListBox1.ItemIndex);
  aPoint.x := aRect.Left;
  aPoint.y := aRect.Top;
  aPoint := ScreenToClient(CheckListBox1.ClientToScreen(aPoint));
  aRect.Bottom := aRect.Bottom-aRect.Top+aPoint.Y;
  aRect.Right := aRect.Right-aRect.Left+aPoint.x;
  aRect.Left := aPoint.x+16;
  aRect.Top := aPoint.Y;
  Edit1.BoundsRect := aRect;

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Di 25.04.06 18:10 
Leider klappt das nicht. Das Edit wird zu tief und zu weit rechts angezeigt; ab dem zweiten Mal stimmt ausserdem die Höhe nicht mehr.

Vielleicht hätte ich folgendes erwähnen sollen:
CheckListBox1 liegt auf einem PageControl (Align := alClient), das PageControl1 wiederum hat Left := 10 und Top := 10, vom linken bzw. oberen Rand von Form1 gemessen.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Di 25.04.06 19:08 
Ich frage jetzt einfach Pixels[Left, Top] ab. Wenn das den Wert $006A240A ergibt, ist es ok. $006A240A entspricht bei meinem PC clHighLight, leider funktioniert es aber mit clHighLight nicht. Das bedeutet, wenn ich irgendwann mal clHighLight einen andere Farbe zuordne, funktioniert mein Programm nicht mehr richtig, weil es ja mit $006A240A arbeitet! Wie kann ich nun clHighLight verwenden?

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Di 25.04.06 19:10 
Hallo,

dann ist es natürlich auch erforderlich das Parent-Control anzugeben:
ausblenden Delphi-Quelltext
1:
aPoint := TabSheet1.ScreenToClient(CheckListBox1.ClientToScreen(aPoint));					


weil es sonst mit Form1 rechnet:
ausblenden Delphi-Quelltext
1:
aPoint := Form1.ScreenToClient(CheckListBox1.ClientToScreen(aPoint));					

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Di 25.04.06 19:27 
user profile iconLannes hat folgendes geschrieben:
dann ist es natürlich auch erforderlich das Parent-Control anzugeben:[/delphi]

Das funktioniert jetzt. Seltsamerweise wird ab dem 2. Ausführen dieses Codes die Höhe zu klein, aber das lässt sich ja anschliessend ändern!

Danke!

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Di 25.04.06 19:40 
Hallo,
user profile icongalagher hat folgendes geschrieben:
...Seltsamerweise wird ab dem 2. Ausführen dieses Codes die Höhe zu klein, aber das lässt sich ja anschliessend ändern!
kann eigentlich nicht an dem Code liegen, hab den Code gerade mehrmals über einen Button ausgeführt, die Höhe des Edits stimmt immer.

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )