![]() |
Zum markierten Objekt scrollen in einer Scrollbox
Hallo,
ich habe da ein problem und zwar habe ich eine liste wo objekte drin stehen(eigene) Trechteck, TKreis und soweiter.... wenn ich da doppelt draufklicke möchte ich gerne zum makierten obejkt springen... leider macht folgender code garnichts:
Delphi-Quellcode:
den befehl ScrollBy habe ich aus dem forem dank der such funktion gefunden.... aber ich komme einfach nicht weiter !
if Paint2main.liste.selobject <> NIL then begin
with Paint2main.liste.selobject do begin (PageControl2.ActivePage.Controls[0] as TScrollBox).ScrollBy(Position.x,position.y ); ((PageControl2.ActivePage.Controls[0] as TScrollBox).Controls[0] as TPanel).Invalidate; paint2main.asf:=(PageControl2.ActivePage.Controls[0] as TScrollBox).Canvas.ClipRect; end; end; kann mir da jemmand weiter helfen ??? achja ich arbeitet unter linux mit lazarus - sollte aber trozdem funktnienrn denke ich oder ? bzw. sollte kein größers problem dastellen !! da lazarus fast so funktniert wie Delphi [edit=MrSpock]Schreibfehler in Überschrift korrigiert. Mfg, MrSpock[/edit] |
Re: Zum makierten objekt Scrollen in einer scorllbox
Hallo Michael,
mit Delphi würde ich etwa so vorgehen:
Delphi-Quellcode:
Freundliche Grüße
procedure TDemoForm.ButtonClick(Sender: TObject);
begin // die drei auf der ScrollBox verteilten Memos // in die ListBox eintragen: with ListBox.Items do begin AddObject('Memo1', Memo1); AddObject('Memo2', Memo2); AddObject('Memo3', Memo3); end; end; procedure TDemoForm.ListBoxClick(Sender: TObject); begin // Beim Klicken auf einen Memo-Eintrag der ListBox // wird das entsprechende Memo in den sichtbaren // Bereich gerollt: with ListBox do ScrollBox.ScrollInView(TControl(Items.Objects[ItemIndex])); end; |
Re: Zum makierten objekt Scrollen in einer scorllbox
Danke für deine Antwort !
leider kennt meine Scrollbox die "methode: ScrollInView" nicht ! |
Re: Zum makierten objekt Scrollen in einer scorllbox
Soviel zu Lazarus. Dann musst Du es manuell programmieren, hier mal ein Beispiel:
Delphi-Quellcode:
Das Fach-Objekt musst Du dann eben durch Deine gewünschte Objektklasse ersetzen.
procedure TForm1.ScrollInView(Sender : TScrollBox; Fach: TFach);
var Rect: TRect; begin if Fach = nil then Exit; with Sender do begin Rect := Classes.Rect(trunc(Fach.x/Fach.scale),trunc(Fach.y/Fach.scale),trunc(Fach.Right/Fach.scale), trunc(Fach.Bottom/fach.scale)); Dec(Rect.Left, HorzScrollBar.Margin); Inc(Rect.Right, HorzScrollBar.Margin); Dec(Rect.Top, VertScrollBar.Margin); Inc(Rect.Bottom, VertScrollBar.Margin); Rect.Left := Rect.Left + PaintBox1.ClientOrigin.X - ClientOrigin.x; Rect.Top := Rect.Top + PaintBox1.ClientOrigin.Y - ClientOrigin.Y; if Rect.Left < 0 then with HorzScrollBar do Position := Position + Rect.Left else if Rect.Right > ClientWidth then begin if Rect.Right - Rect.Left > ClientWidth then Rect.Right := Rect.Left + ClientWidth; with HorzScrollBar do Position := Position + Rect.Right - ClientWidth; end; if Rect.Top < 0 then with VertScrollBar do Position := Position + Rect.Top else if Rect.Bottom > ClientHeight then begin if Rect.Bottom - Rect.Top > ClientHeight then Rect.Bottom := Rect.Top + ClientHeight; with VertScrollBar do Position := Position + Rect.Bottom - ClientHeight; end; end; end; |
Re: Zum makierten objekt Scrollen in einer scorllbox
gibt er in diesen qullcode:
Delphi-Quellcode:
eine fehlermeldung aus das ist margin nicht gibt !
Dec(Rect.Left, HorzScrollBar.Margin);
Inc(Rect.Right, HorzScrollBar.Margin); Dec(Rect.Top, VertScrollBar.Margin); Inc(Rect.Bottom, VertScrollBar.Margin); VIELEN DANK FÜR DEINE ANTWORT |
Re: Zum makierten objekt Scrollen in einer scorllbox
Wenn die Lazarus-Scrollbar-Objekte keinen Margin haben, dann verscuh eben den irgendwie zu ermitteln oder setze ihn konstant ein (z.b. 2).
|
Re: Zum makierten objekt Scrollen in einer scorllbox
ist Margin der abstand zwischen den komponenten oder was genau speichert diese vairbale ?
|
Re: Zum makierten objekt Scrollen in einer scorllbox
Ja. Standardmäßig ist der in einer VCL-Scrollbox auf 0 gesetzt.
|
Re: Zum makierten objekt Scrollen in einer scorllbox
vielen dank für den tip !l also werde ich einfach eine lockale variable defnieren und mit 0 installisieren !
|
Re: Zum makierten objekt Scrollen in einer scorllbox
Oder Du läßt es einfach weg ;)
|
Re: Zum makierten objekt Scrollen in einer scorllbox
was muss ich den bei Scale einsetzten ?
|
Re: Zum makierten objekt Scrollen in einer scorllbox
Den Wert 1. Das angegebene Beispiel stammt aus einem Wegeoptimierungsprogramm. Der Wert Scale gibt bei meinen Objekten einen Faktor an, mit dem die Darstellung stufenlos vergrößert oder verkleinert werden kann.
|
Re: Zum markierten Objekt scrollen in einer Scrollbox
d.h. das heißt wenn ich den wert auf 1 stelle !
werde ich gleich mal verscuhen ! edit: soweit war ich auch schonmal ! es wird einfach nur die die Scrollbox balken geändert aber leider nicht die sicht !!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:37 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