![]() |
Scrollbalken in eigener Komponente
Wie einfach/kompliziert ist es, Scrollbalken in einer selbstgeschriebenen Componente zu verwenden?
Und von welcher Klasse sollte ich diese Komponente ableiten, wenn ich eine Art Stringgrid programmieren möchte? z.Z. erstelle ich die Scrollbalken selber, aber beim schnellen scrollen werden die teilweise durch meinen Code überschieben => flackern. |
Re: Scrollbalken in eigener Komponente
Empfehlung: Such Dir eine Vorlage mit ScrollBars - wie z.B. TStringGrid - aus, von der Du Deine eigene Lösung ableitest. Dann kannst Du auf viele Eigenschaften und Methoden zurückgreifen und musst das nicht selbst entwickeln. Gruß Jürgen
|
Re: Scrollbalken in eigener Komponente
Zitat:
Bisher ist es aber so, dass die Hide-Methode meines eigenen Editors noch nichtmal in das Programm compiliert wird.
Delphi-Quellcode:
unit Unit2;
interface uses Classes, Windows, Grids; type TMyStringGrid = class; TMyStringGridExitEdit = procedure(Sender: TMyStringGrid; Value: string) of object; TMyInplaceEdit = class(TInplaceEdit) private FOnHide : TNotifyEvent; public constructor Create(AOwner: TComponent); override; procedure Hide; published property OnHide: TNotifyEvent read FOnHide write FOnHide default nil; end; TMyStringGrid = class(TStringGrid) private FMyInplaceEdit: TMyInplaceEdit; FOnExitEdit: TMyStringGridExitEdit; procedure OnInplaceEditorHide(Sender: TObject); protected function CreateEditor: TInplaceEdit; override; public constructor Create(AOwner: TComponent); published property OnExitEdit: TMyStringGridExitEdit read FOnExitEdit write FOnExitEdit; end; implementation { TMRStringGrid } constructor TMyStringGrid.Create(AOwner: TComponent); begin inherited; FOnExitEdit := nil; end; function TMyStringGrid.CreateEditor: TInplaceEdit; begin FMyInplaceEdit := TMyInplaceEdit.Create(Self); FMyInplaceEdit.OnHide := OnInplaceEditorHide; Result := FMyInplaceEdit; end; procedure TMyStringGrid.OnInplaceEditorHide(Sender: TObject); var s: string; begin s := FMyInplaceEdit.Text; if (Assigned(FOnExitEdit)) then FOnExitEdit(Self, s); end; { TMRInplaceEdit } constructor TMyInplaceEdit.Create(AOwner: TComponent); begin inherited; FOnHide := nil; end; procedure TMyInplaceEdit.Hide; begin if HandleAllocated and IsWindowVisible(Handle) then begin Invalidate; SetWindowPos(Handle, 0, 0, 0, 0, 0, SWP_HIDEWINDOW or SWP_NOZORDER or SWP_NOREDRAW); if Focused then Windows.SetFocus(Grid.Handle); end; if (Assigned(FOnHide)) then FOnHide(Self); end; end. |
Re: Scrollbalken in eigener Komponente
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:49 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