Entwicklung eines Tutorials zur Komponentenentwicklung
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Entwicklung eines Tutorials zur Komponentenentwicklung
Originaltitel des Threads: Scrollbars - Einführung erbeten
Der neue Titel passt aufgrund der Entwicklung des Themas IMHO besser.
Bisher habe ich Scrollbars lediglich als User benutzt. Jetzt erstelle ich gerade meine erste eigene Komponente und bin an der Stelle, an der ich mich um Scrollbars kümmern möchte, also habe ich Suchfunktionen benutzt und eine überwältigende Flut von verschiedensten Informationen dazu gefunden. Leider kein Tutorial und keine Übersicht, was Ordnung reingebracht hätte. Ein Auszug:
1. Es gibt TScrollbar, was ein eigenes Control ist, könnte man kapseln.
2. Es gibt TControlScrollBar, was zum Control dazugehören und gemeinsam gezeichnet würde.
3. TControl hat schon Scrollbars, man braucht sie nur noch benutzen.
4. Direkte WinAPI-nahe Einbindung (für mich nicht relevant, weil nicht plattformunabhängig)
Wie geht man denn nun in Lazarus typischerweise vor? Ich progge eine eigene Listbox, die von CustomControl abgeleitet ist.
Der neue Titel passt aufgrund der Entwicklung des Themas IMHO besser.
Bisher habe ich Scrollbars lediglich als User benutzt. Jetzt erstelle ich gerade meine erste eigene Komponente und bin an der Stelle, an der ich mich um Scrollbars kümmern möchte, also habe ich Suchfunktionen benutzt und eine überwältigende Flut von verschiedensten Informationen dazu gefunden. Leider kein Tutorial und keine Übersicht, was Ordnung reingebracht hätte. Ein Auszug:
1. Es gibt TScrollbar, was ein eigenes Control ist, könnte man kapseln.
2. Es gibt TControlScrollBar, was zum Control dazugehören und gemeinsam gezeichnet würde.
3. TControl hat schon Scrollbars, man braucht sie nur noch benutzen.
4. Direkte WinAPI-nahe Einbindung (für mich nicht relevant, weil nicht plattformunabhängig)
Wie geht man denn nun in Lazarus typischerweise vor? Ich progge eine eigene Listbox, die von CustomControl abgeleitet ist.
Zuletzt geändert von RSE am So 25. Okt 2009, 22:28, insgesamt 1-mal geändert.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Scrollbars - Einführung erbeten
Ich hänge hier einfach noch mal meine ListView dran. Dort habe ich das Scrollen gelöst. Für dich dürfte unter anderem die Methode SetupScrollbalken interessant sein: http://www.lazarusforum.de/download/file.php?id=897" onclick="window.open(this.href);return false;
Dort nutzt ich die Möglichkeiten von "TCustomControl"
Im Anhang findest du ein Beispiel von Traude aus dem DelphiGL Forum. Ich hoffe du hast nichts dagegen wenn ich hier das Beispiel einfach Hochlade.
Hier wird die TScrollBar genutzt.
Noch eine "Deutsche Übersetzung" von Traude von diesem Tutorial hier:
http://www.catch22.net/tuts/editor03.asp" onclick="window.open(this.href);return false; Sie ist zwar für Windows, aber teilweise stimmt das auch für Lazarus. Zum Glück.
Ich hoffe ich konnte die weiter Helfen. Ich bin schon lange am überlegen ob und wie ich am besten ein Tutorial zum Thema: Komponenten Entwicklung + Scroll Balken Schreiben könnte / Sollte.
Dort nutzt ich die Möglichkeiten von "TCustomControl"
Im Anhang findest du ein Beispiel von Traude aus dem DelphiGL Forum. Ich hoffe du hast nichts dagegen wenn ich hier das Beispiel einfach Hochlade.
Hier wird die TScrollBar genutzt.
Noch eine "Deutsche Übersetzung" von Traude von diesem Tutorial hier:
http://www.catch22.net/tuts/editor03.asp" onclick="window.open(this.href);return false; Sie ist zwar für Windows, aber teilweise stimmt das auch für Lazarus. Zum Glück.
Ich hoffe ich konnte die weiter Helfen. Ich bin schon lange am überlegen ob und wie ich am besten ein Tutorial zum Thema: Komponenten Entwicklung + Scroll Balken Schreiben könnte / Sollte.
- Dateianhänge
-
TextEditor.zip
- Das erste Beispiel, was mir sehr geholfen hat. Stammt von Traude
- (1.82 KiB) 77-mal heruntergeladen
-
ScrollbarsTutorial.zip
- Deutsche Übersetzung von Traude
- (41.77 KiB) 98-mal heruntergeladen
-
TextViewer.zip
- Beispiel von "Traude"
- (7.67 KiB) 78-mal heruntergeladen
Zuletzt geändert von pluto am So 25. Okt 2009, 19:50, insgesamt 1-mal geändert.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Re: Scrollbars - Einführung erbeten
Im Texteditor von Pluto ist das ganz übersichtlich, auch wie man an die Ereignisse rankommt. Ich werd das mal ausprobieren.
Ein Tutorial zum Thema Komponentenentwicklung wär natürlich richtig toll. Vielleicht könnte man das so Wiki-mäßig irgendwo anlegen und gut strukturieren. Es gibt ja einige Fallstricke. Man könnte mit den Grundlagen anfangen, wie sie im Lazarus-Wiki stehen (wie fängt man überhaupt an, Packages etc.). Dann müsste man eine Art Verzeichnis mit Einzelproblemen, die während der Entwicklung auftreten, anlegen, wo dann so Sachen reingehören wie die Scrollbalkenproblematik, wie funktioniert eigentlich Invalidate, Sachen wie GetControlClassDefaultSize, usw. Mehr fällt mir grad nicht ein, aber es gibt bestimmt noch so Einiges.
Das kommt bestimmt im offiziellen Lazarus-Wiki unter http://wiki.lazarus.freepascal.org/Laza ... Developing ganz gut an.
Ein Tutorial zum Thema Komponentenentwicklung wär natürlich richtig toll. Vielleicht könnte man das so Wiki-mäßig irgendwo anlegen und gut strukturieren. Es gibt ja einige Fallstricke. Man könnte mit den Grundlagen anfangen, wie sie im Lazarus-Wiki stehen (wie fängt man überhaupt an, Packages etc.). Dann müsste man eine Art Verzeichnis mit Einzelproblemen, die während der Entwicklung auftreten, anlegen, wo dann so Sachen reingehören wie die Scrollbalkenproblematik, wie funktioniert eigentlich Invalidate, Sachen wie GetControlClassDefaultSize, usw. Mehr fällt mir grad nicht ein, aber es gibt bestimmt noch so Einiges.

Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Scrollbars - Einführung erbeten
Kleine Berichtigung: Das Stammt von TraudeIm Texteditor von Pluto ist das ganz übersichtlich,
Leider braucht das aber einiges an Vorarbeit. Ich habe mir das in etwa so vorgestellt:Scrollbalkenproblematik
Es gibt vier Teile:
Teil 1: Eine eigene ListBox mit einigen Besonderheiten, nur als Beispiel gedacht
Teil 2: Die Scroll Funktion
Teil 3: Komponenten in die IDE bringen(Komponenten Platte, ICON)
Teil 4: Property Editor für den OI
Wir könnten das ja so lösen: ich fange damit an, und ihr müsst es dann nur auf "Rechtschreibfehler" prüfen..... Das Tutorial würde ich so schreiben, dass es nicht für Anfänger geeignet ist, sondern für leute die sich schon mit Lazarus etwas auskennen. Z.B. würde ich intern auf eine "TObjectList" setzten, statt auf eine TStringList und auch eine Columns Eigenschaft hinzufügen. Ich würde vom Konzept her es so ähnlich machen wie die TListView....
Mein Problem ist dabei immer wieder, wie Wandel ich den Soruce-Code so um, dass er im Tutorial hervorgehoben wird oder ich schreibe es nur für das Lazarus-Forum.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Re: Scrollbars - Einführung erbeten
Ich kam drauf, weil in der Unit1.pas die Zeile "Name:='PlutoEditor1';" auftauchtpluto hat geschrieben:Kleine Berichtigung: Das Stammt von Traude

Zum Tutorial:
Ich würde es auf http://wiki.lazarus.freepascal.org/How_ ... _Component aufbauen und genauso allgemein halten. Also nicht gleich eine ganze Komponente beispielhaft erstellen, sondern lediglich die Grundlagen dazu vermitteln. So, dass man nicht nur Listviews damit erstellen kann

Ich bin gerade dabei Material zu der Scrollproblematik zu sammeln, die kannst du dann gern komplett verwerten. Ich werds dann hier posten. Meinen Einstieg habe ich letztlich in objectinspector.pp gefunden, plattformunabhängig im Gegensatz zu dem Editor, den du gepostet hast.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Scrollbars - Einführung erbeten
Der ist auch "plattformunabhängig" bzw sollte er sein.plattformunabhängig im Gegensatz zu dem Editor, den du gepostet hast.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Re: Scrollbars - Einführung erbeten
Er arbeitet aber mit Windows Messages (WM...) statt mit Lazarus Messages (LM...). Er hat die Unit Messages statt LMessages eingebunden.pluto hat geschrieben:Der ist auch "plattformunabhängig" bzw sollte er sein.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Scrollbars - Einführung erbeten
Das macht nichts, das sind Botschaften die auch unter Linux aufgerufen werden zum größten Teil. Du kannst es ja gerne in LM ändern. In meinem ListView Beispiel habe ich das glaube ich schon getan.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Re: Scrollbars - Einführung erbeten
Mein zusammengetragenes Material zur "Scrollproblematik":
Und der Beispielcode aus objectinspector.pp:
Code: Alles auswählen
Aus den Recorddefinitionen wurden zur Verbesserung der Lesbarkeit
Füllwerte für 64bit und ähnliches entfernt.
hinzugefügte eigene Kommentare:
// siehe MSDN
// Was bedeutet das?
// ########################
// ### ScrollInfo Stile ###
// ########################
SetScrollInfo SBStyle:
SB_Horz = 0; // siehe MSDN
SB_Vert = 1; // siehe MSDN
SB_CTL = 2; // siehe MSDN
SB_BOTH = 3; //What would this do ??? it is not a used winapi constant
aus MSDN:
SB_CTL
Sets the parameters of a scroll bar control.
The hwnd parameter must be the handle to the scroll bar control.
SB_HORZ
Sets the parameters of the window's standard horizontal scroll bar.
SB_VERT
Sets the parameters of the window's standard vertical scroll bar.
// ###################
// ### TScrollInfo ###
// ###################
TScrollInfo = record
cbSize : UINT; // siehe MSDN
fMask : UINT; // siehe MSDN
nMin: Integer; // siehe MSDN
nMax: Integer; // siehe MSDN
nPage: UInt; // siehe MSDN
nPos: Integer; // siehe MSDN
nTrackPos: Integer; // siehe MSDN
end;
Lazarus-Werte für fMask:
SIF_RANGE = 1; // siehe MSDN
SIF_PAGE = 2; // siehe MSDN
SIF_POS = 4; // siehe MSDN
SIF_DISABLENOSCROLL = 8; // siehe MSDN
SIF_TRACKPOS = $10; // siehe MSDN
SIF_ALL = (SIF_RANGE or SIF_PAGE or SIF_POS or SIF_TRACKPOS); // siehe MSDN
SIF_UPDATEPOLICY = $100; // Was bedeutet das?
aus MSDN:
cbSize
Specifies the size, in bytes, of this structure.
The caller must set this to sizeof(SCROLLINFO).
fMask
Specifies the scroll bar parameters to set or retrieve.
This member can be a combination of the following values:
SIF_ALL
Combination of SIF_PAGE, SIF_POS, SIF_RANGE, and SIF_TRACKPOS.
SIF_DISABLENOSCROLL
This value is used only when setting a scroll bar's parameters.
If the scroll bar's new parameters make the scroll bar unnecessary,
disable the scroll bar instead of removing it.
SIF_PAGE
The nPage member contains the page size for a proportional scroll bar.
SIF_POS
The nPos member contains the scroll box position,
which is not updated while the user drags the scroll box.
SIF_RANGE
The nMin and nMax members contain the minimum and
maximum values for the scrolling range.
SIF_TRACKPOS
The nTrackPos member contains the current position of the
scroll box while the user is dragging it.
nMin
Specifies the minimum scrolling position.
nMax
Specifies the maximum scrolling position.
nPage
Specifies the page size. A scroll bar uses this value to determine
the appropriate size of the proportional scroll box.
nPos
Specifies the position of the scroll box.
nTrackPos
Specifies the immediate position of a scroll box that the user is dragging.
An application can retrieve this value while processing
the SB_THUMBTRACK request code. An application cannot set
the immediate scroll position; the SetScrollInfo function ignores this member.
// #################
// ### TLMScroll ###
// #################
// MWE: TLMScroll has not the same size as the VCL/Winapi counterpart.
// IMO we don't have to force all widgetsets to be compatible in a shortcoming
// in the win32 API.
// So POS: SmallInt -> LongInt and a win32compatible smallpos is added
// Due to this, the record is a LongInt to large.
TLMScroll = record
Msg: Cardinal; // Was bedeutet das?
ScrollCode: SmallInt; // SB_xxx
SmallPos: SmallInt; // Was bedeutet das?
ScrollBar: HWND; // Was bedeutet das? Vermutung: Handle des Controls
Result: LRESULT; // See remark // Was bedeutet das?
Pos: LongInt; // Was bedeutet das?
end;
Lazarus ScrollCodes:
SB_LINEUP = 0; // siehe MSDN
SB_LINELEFT = 0; // siehe MSDN
SB_LINEDOWN = 1; // siehe MSDN
SB_LINERIGHT = 1; // siehe MSDN
SB_PAGEUP = 2; // siehe MSDN
SB_PAGELEFT = 2; // siehe MSDN
SB_PAGEDOWN = 3; // siehe MSDN
SB_PAGERIGHT = 3; // siehe MSDN
SB_THUMBPOSITION = 4; // siehe MSDN
SB_THUMBTRACK = 5; // siehe MSDN
SB_TOP = 6; // siehe MSDN
SB_LEFT = 6; // siehe MSDN
SB_BOTTOM = 7; // siehe MSDN
SB_RIGHT = 7; // siehe MSDN
SB_ENDSCROLL = 8; // siehe MSDN
SB_POLICY_CONTINUOUS = 10; // Was bedeutet das?
SB_POLICY_DISCONTINUOUS = 11; // Was bedeutet das?
SB_POLICY_DELAYED=12; // Was bedeutet das?
Aus MSDN:
WM_VSCROLL:
SB_BOTTOM
Scrolls to the lower right.
SB_ENDSCROLL
Ends scroll.
SB_LINEDOWN
Scrolls one line down.
SB_LINEUP
Scrolls one line up.
SB_PAGEDOWN
Scrolls one page down.
SB_PAGEUP
Scrolls one page up.
SB_THUMBPOSITION
The user has dragged the scroll box (thumb) and released the mouse button.
The high-order word indicates the position of the scroll box at the end of the drag operation.
SB_THUMBTRACK
The user is dragging the scroll box. This message is sent repeatedly
until the user releases the mouse button. The high-order word indicates
the position that the scroll box has been dragged to.
SB_TOP
Scrolls to the upper left.
WM_HSCROLL:
SB_ENDSCROLL
Ends scroll.
SB_LEFT
Scrolls to the upper left.
SB_RIGHT
Scrolls to the lower right.
SB_LINELEFT
Scrolls left by one unit.
SB_LINERIGHT
Scrolls right by one unit.
SB_PAGELEFT
Scrolls left by the width of the window.
SB_PAGERIGHT
Scrolls right by the width of the window.
SB_THUMBPOSITION
The user has dragged the scroll box (thumb) and released the mouse button.
The high-order word indicates the position of the scroll box at the end of the drag operation.
SB_THUMBTRACK
The user is dragging the scroll box. This message is sent repeatedly
until the user releases the mouse button. The high-order word indicates
the position that the scroll box has been dragged to.
// #####################
// ### TLMMouseEvent ###
// #####################
TLMMouseEvent = record
Msg: Cardinal; // Was bedeutet das?
Button: Word; // 1=left, 2=right, 3=middle
WheelDelta: SmallInt; // -1 for up, 1 for down
// Sehr interessant in diesem Zusammenhang: Mouse.WheelScrollLines
X: Smallint; // under gtk this is longint
Y: Smallint; // ditto
Result: LRESULT; // to fit std message size
UserData: pointer; // used under gtk
State: TShiftState; // in win is the equivalent of button
end;
Code: Alles auswählen
procedure WMVScroll(var Msg: TLMScroll); message LM_VSCROLL;
procedure WMMouseWheel(var Message: TLMMouseEvent); message
LM_MOUSEWHEEL;
procedure UpdateScrollBar;
procedure TOICustomPropertyGrid.WMVScroll(var Msg: TLMScroll);
begin
case Msg.ScrollCode of
// Scrolls to start / end of the text
SB_TOP: TopY := 0;
SB_BOTTOM: TopY := TopMax;
// Scrolls one line up / down
SB_LINEDOWN: TopY := TopY + DefaultItemHeight div 2;
SB_LINEUP: TopY := TopY - DefaultItemHeight div 2;
// Scrolls one page of lines up / down
SB_PAGEDOWN: TopY := TopY + ClientHeight - DefaultItemHeight;
SB_PAGEUP: TopY := TopY - ClientHeight + DefaultItemHeight;
// Scrolls to the current scroll bar position
SB_THUMBPOSITION,
SB_THUMBTRACK: TopY := Msg.Pos;
// Ends scrolling
SB_ENDSCROLL: SetCaptureControl(nil); // release scrollbar capture
end;
end;
procedure TOICustomPropertyGrid.WMMouseWheel(var Message: TLMMouseEvent);
begin
// -1 : scroll by page
if Mouse.WheelScrollLines=-1
then TopY := TopY -
(Message.WheelDelta * (ClientHeight - DefaultItemHeight)) div 120
// scrolling one line -> scroll half an item, see SB_LINEDOWN and SB_LINEUP
// handler in WMVScrol
else TopY := TopY -
(Message.WheelDelta * Mouse.WheelScrollLines*DefaultItemHeight) div 240;
Message.Result := 1;
end;
procedure TOICustomPropertyGrid.UpdateScrollBar;
var
ScrollInfo: TScrollInfo;
begin
if HandleAllocated then begin
ScrollInfo.cbSize := SizeOf(ScrollInfo);
ScrollInfo.fMask := SIF_ALL or SIF_DISABLENOSCROLL;
ScrollInfo.nMin := 0;
ScrollInfo.nTrackPos := 0;
ScrollInfo.nMax := TopMax+ClientHeight-1;
ScrollInfo.nPage := ClientHeight;
if ScrollInfo.nPage<1 then ScrollInfo.nPage:=1;
if TopY > ScrollInfo.nMax then TopY:=ScrollInfo.nMax;
ScrollInfo.nPos := TopY;
ShowScrollBar(Handle, SB_VERT, True);
SetScrollInfo(Handle, SB_VERT, ScrollInfo, True);
end;
end;
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Scrollbars - Einführung erbeten
Nicht Schlecht, wenn die Kometare noch in Deutsch währe, könnte ich das sogar für mein Tutorial verwenden. Einige kann ich selbst übersetzten bzw. hinschreiben aber leider nicht alle. Z.B. die "SIF_" sachen.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Re: Scrollbars - Einführung erbeten
Das ist alles nur zusammengetragen aus den Lazarus-Quellen und MSDN... nahezu nix selbst verändert, außer wie am Anfang vom Text beschrieben.
Reicht dein Englisch nicht? Übersetzen wär kein Prob für mich... Wenn du mit Englisch nicht so fit bist, dann würde sich natürlich auch http://wiki.lazarus.freepascal.org/Lazarus_Packages/de eher anbieten, um das Tutorial in das offizielle Wiki einzubinden. Aber dann musst du natürlich alles neu schreiben, http://wiki.lazarus.freepascal.org/How_ ... _Component bietet da schon eine bessere Grundlage vom Stoff her.pluto hat geschrieben:Einige kann ich selbst übersetzten bzw. hinschreiben aber leider nicht alle.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Scrollbars - Einführung erbeten
Ich würde das Tutorial sowieso erst einmal so schreiben, dass es ins Lazaurs-Forum passt. Wenn es dann reif ist für's Wiki kann es dort übernommen werden. Auch wenn das nicht so einfach wird. Ich habe mir schon einige sachen überlegt. Im Tutorial wird es Ausschließlich darum gehen komplett eigene Komponenten zu erstellen die von TCustomControl abgeleitet sind und diese Komponenten dann in Lazarus zu nutzen.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Re: Scrollbars - Einführung erbeten
Klingt gut. Aber wie ist das nun mit deinem Englisch? Wär ja keine Sache, aber sagen musst du es schon, ob ich mir die Mühe machen soll.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Entwicklung eines Tutorials zur Komponentenentwicklung
Mein Englisch reicht für ein Tutorial wohl nicht aus. Wenn ich eins schreiben sollte, müsste es einer übersetzten ins Englisch. Sobald es ausgereift ist.
Es gibt bestimmt viele Wege eine Komponente zu erstellen, ich gehe immer den gleichen Weg....
Es gibt bestimmt viele Wege eine Komponente zu erstellen, ich gehe immer den gleichen Weg....
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Re: Entwicklung eines Tutorials zur Komponentenentwicklung
OK, dann weiß ich Bescheid, wenn du dir bei einer Übersetzung nicht sicher bist, dann frag einfach nach. Hier die (freie) Übersetzung der SIF_ Sachen:
Code: Alles auswählen
cbSize
Spezifiziert die Größe der Struktur in Bytes,
muss immer auf sizeof(SCROLLINFO) gesetzt werden.
fMask
Spezifiziert, welche Parameter gesetzt werden sollen.
Es kann eine OR-Verknüpfung der folgenden Werte benutzt werden:
SIF_ALL
(SIF_PAGE or SIF_POS or SIF_RANGE or SIF_TRACKPOS)
SIF_DISABLENOSCROLL
Wird nur benutzt, um die Parameter der Scrollbar zu setzen.
Wenn die neuen Parameter die Scrollbar unnütz machen,
soll die Scrollbar disabled (grau?) werden, anstatt sie zu entfernen.
Anmerkung: K.A. was der zweite Satz da soll. Offenbar muss
der Parameter beim Setzen immer angegeben werden.
SIF_PAGE
Increment für seitenweises Scrollen
SIF_POS
Position der Scrollbar, wird während dem Verschieben
des Balkens mit der Maus nicht verändert.
SIF_RANGE
Minimum und Maximum
SIF_TRACKPOS
Position der Scrollbar während dem Verschieben
des Balkens mit der Maus.
nMin
Minimum
nMax
Maximum
nPage
Increment für seitenweises Scrollen. Wird für die Berechnung
der Größe des Balkens herangezogen.
nPos
Position des Balkens
nTrackPos
Position der Scrollbar während dem Verschieben
des Balkens mit der Maus. Wird beim Setzen immer ignoriert.
Kann über SB_THUMBTRACK erfragt werden.
Anmerkung: K.A. von SB_THUMBTRACK, aber die bekommt
man auch mit GetScrollInfo().
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!