Witam,
Robie program i nieestetycznie wygląda w nim scrollbar dołączony np. do memo. Chcialbym wstawic dwa TImage i z nich zrobic scrollbar takiego memo. Bez paska przewijania bo to mi nie potrzebne. Chodzi o efekt jak czasami spotyka sie we flash, zwykłe dwie strzałki - po kliknieciu na gorna memo idzie o linie do gory a po kliknieciu na dolna - idzie na dół. Czy da sie jakos obsłuzyc te zdarzenia? Czy da sie to wykonac?
Wyłączyć scrolle w menu i pobawić sie komunikatem WM_VSCROLL
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/scrollbars/scrollbarreference/scrollbarmessages/wm_vscroll.asp
Nie jestem pewny, czy dobrzecię rozumiem, ale chyba Dominik źle cię zrozumiał, a poza tym ci tu wyskakuje z WinApi, gdy ty bawisz się VCLem...
Przejdę do rzeczy... możesz zrobić przyciski TBUTTON z Caption ustawionym na odpowiednie znaki takie jak: ? U+25B2 ; ? U+25BA; ? U+25BC i ? U+25C4 . Również, jeśli chcesz to możesz użyć rzeczywiście TImage i narysować strzałki, chyba wiesz jak ;)
<ort>Niezalerznie </ort>od metody, którą wybierzesz, kod na onClick będzie ten sam... Nie <ort>jestemm </ort>ekspertem od VCL, ale myślę, że powinieneś w tym celu użyć polecenia Memo.Lines.Move(), popróbuj...
a macie pomysł na usunięcie scrollbara np z TListBox, który takiej opcji nie oferuje ? tzn usunięcia go z komponentu który nie ma właściwości dotyczącej scrollbarów ?
[EDIT]
bo taką mam koncepcję, sterowania dwoma ListBox'ami za pomocą jednego scrollbara...przeszukałem neta ale nic ni ma...
[EDIT2]
ha, kiedyś szukałem czegoś identycznego tylko dla DBGrida, też tutaj na forum, oto rozwiązanie:
unit Newgrid;
interface
uses
WinTypes, WinProcs, Classes, DBGrids;
type
TNoVertScrollDBGrid = class(TDBGrid)
protected
procedure Paint; override;
end;
procedure Register;
implementation
procedure TNoVertScrollDBGrid.Paint;
begin
SetScrollRange(Self.Handle, SB_VERT, 0, 0, False);
inherited Paint;
end;
procedure Register;
begin
RegisterComponents('Data Controls', [TNoVertScrollDBGrid]);
end;
end.
wciąż jednak nie rozwiązuje to mojego aktualnego problemu. nie mogę sie czy to przy definiowaniu nowej klasy pochodnej po TCustomListBox czy TListBox dostać do metody Paint ! w przeciwieństwie do TDBGrid pomija klasę TCustomControl, która tą metodę deklaruje...macie pomysły ? :> [???]
Dream Meaker: nie wszystko da się zrobić VCL-em :P . Co do chowania ScrollBara to kiedys usiłowałem dojść jak to zrobić i efekty (niezbyt doskonałe) są tu http://4programmers.net/Forum/180881 .