Einzelnen Beitrag anzeigen

whiteF

Registriert seit: 14. Okt 2008
45 Beiträge
 
#4

AW: OnDrawTab korrekt ausführen

  Alt 10. Okt 2016, 11:25
@ Uwe
Das hatte ich auch schon probiert; leider ohne Erfolg.

Das Fenster wird zwar neu erzeugt aber nur die im pagecontrol enthaltenen TMemos verlieren ihre Scrollbar Position.

Die Jedi-Kompontenten behandeln das leider genauso (TJvPageControl, TJvMemo).

Da bleibt wohl nur der Weg des Auslesen des Caret jedes einzelnen TMemo innerhalb jeden pageControl vor der OwnerDraw aktualisierung
Delphi-Quellcode:
MemoV2.Hint := IntToStr(MemoV2.CaretPos.Y);
pControl.OwnerDraw := False;
pControl.OwnerDraw := True;
und ein auslesen wieder bei OnDraw:
Delphi-Quellcode:
procedure TFormMessenger.pcMessengerDrawTab(Control: TCustomTabControl;
  TabIndex: Integer; const [Ref] Rect: TRect; Active: Boolean);
var
  sCaption : String;
  i, ii, iTop, iLeft, important : Integer;
  Farbe : TColor;
  ThisControl : TControl;
  ThisMemo : TMemo;
begin

...

          for i := 0 to pcMessenger.PageCount - 1 do
          begin

            for ii := 0 to pcMessenger.Pages[i].ControlCount-1 do
            begin

              ThisControl := pcMessenger.Pages[i].Controls[ii];

              if ThisControl is TMemo then
              begin

                ThisMemo := ThisControl as TMemo;

                if RightStr(ThisMemo.Name, 5) <> '_tempthen
                begin
                  if Farbe = clBlue then
                    UnitUsefullTools.MemoScrollDown(ThisMemo) //Sofern die var Farbe = clBlue (ein neuer Eintrag), dann scrolle bis ganz unten...
                  else
                    if ThisMemo.Hint <> 'then
                      UnitUsefullTools.MemoScrollTo(ThisMemo, StrToInt(ThisMemo.Hint)) //Sofern die var Farbe <> clBlue (KEIN neuer Eintrag), dann scrolle bis zur letzten Position (die im Hint zuvor aufenommen wurde)...
                end;
              end;

            end;
          end;
...
end;

Geändert von whiteF (10. Okt 2016 um 11:28 Uhr)
  Mit Zitat antworten Zitat