bei meinem PLEDITOR bin ich jetzt beim Scrollen angelangt. Die Komponente wurde von TCustomControl abgeleitet.
Unter GTK1 Funktioniert das Scrollen. Aber ich möchte es gerne das es unter GTK2 auch Funktioniert und genau das Tut es nicht. Der Scrollbalken bewegt sich nicht einmal Ich schließe daraus das es möglicherweise ein GTK2 Fehler ist, aber es kann natürlich auch sein das ich was vergessen habe, aber was ? Hier ein Code-Ausschnitt:
Code: Alles auswählen
procedure TPLEditor.ScrollV(const aScrollCode: Integer);
begin
inherited;
with EditorTextBuffer do begin
Case aScrollCode of
{ SB_TOP: FirstLine:=0;
SB_BOTTOM: FirstLine:= LastLine;
SB_LINEUP: if FirstLine > 0 then FirstLine:=FirstLine-1;
SB_LINEDOWN: if FirstLine < LastLine then FirstLine:=FirstLine+1;
SB_PAGEUP: if Firstline > LinesPerPage-1 then FirstLine:=FirstLine-LinesPerPage;
SB_PAGEDOWN: if Firstline < LastLine then FirstLine:=FirstLine+LinesPerPage;
}
SB_THUMBTRACK,SB_THUMBPOSITION: begin
SV.cbSize := SizeOf(SV);
SV.fMask := SIF_TRACKPOS;
GetScrollInfo(Handle, SB_Vert, SV);
SV.nPos:=sv.nTrackPos;
FirstLine:=sv.nTrackPos;
end;
end; // Of Case
Paint;
end;
end; // TPLEditor.ScrollV
procedure TPLEditor.Paint;
begin
inherited Paint;
EditorTextBuffer.NoNewPaint:=True;
EditorTextBuffer.ClearBuffer;
EditorTextBuffer.NewPaint:=True;
EditorTextBuffer.NoNewPaint:=False;
EditorTextBuffer.Paint;
SetupScrollBars;
end; // TPLEditor.Paint
procedure TPLEditor.SetupScrollBars;
begin
if (HandleAllocated) then begin
if (EditorTextBuffer.Count >0) {and (fTextBuffer.count-1 >= fTextBuffer.LinesPerPage-6) }then begin
SV.cbSize := SizeOf(SV);
SV.fMask := SIF_POS or SIF_RANGE or SIF_PAGE or SIF_DISABLENOSCROLL ;
SV.nPos := EditorTextBuffer.FirstLine;
SV.nMin := 0;
SV.nMax := EditorTextBuffer.CountPX;
SV.nPage:= EditorTextBuffer.Buffer.Height;
SetScrollInfo(Handle, SB_Vert, SV,True);
end;
....
end;
Vielen Dank.....