Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: in stringgrids pixelweise scrollen? wie?

  Alt 5. Jul 2004, 13:03
Zitat von pmac:
ich möchte in einem stringgrid wörter ablegen, die auch viel länger als die tabelle selbst sein können.
das problem ist nun, dass das scrollen im stringgrid spaltenweise erfolgt.
wie ist es nun möglich, in dem stringgrid PIXELWEISE zu scrollen?
Da das StringGrid diese Funktionalität nicht bietet, gibt es sehr wahrscheinlich keine Chance dies durch Tricks nachzuholen.
Aber es gäbe da folgende Alternativen:
  • beim Selektieren einer Zeile wird das Property Hint auf den Zelleninhalt gesetzt.
    Damit wird der Inhalt als Hintfenster angezeigt.
  • Die Spalten des Stringgrids werden so breit gemacht, dass der gesamte Inhalt hinein passt.
    Dazu poste ich demnächst eine Unit für die Code-Library.
  • Der Inhalt wird mehrzeilig ausgegeben. Dazu muss ein Eventhandler für OnDrawCell geschrieben werden.
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
   s : string;
begin
   s := StringGrid1.Cells[acol, ARow];

   if gdfixed in State then
      StringGrid1.Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2, s)
   else
   begin
      StringGrid1.Canvas.FillRect(Rect);
      Inc(Rect.Top, 2);
      Inc(Rect.Left, 2);
      DrawText(StringGrid1.Canvas.Handle, PChar(s), Length(s), Rect, DT_LEFT or DT_WORDBREAK);
   end;
end;
Andreas
  Mit Zitat antworten Zitat