Einzelnen Beitrag anzeigen

Kunoishi

Registriert seit: 26. Dez 2002
Ort: Berlin
140 Beiträge
 
Delphi 5 Standard
 
#1

StringGrid Spalten Zentrieren, Linksbündig,Rechtsbündig und

  Alt 4. Aug 2009, 19:26
ich habe es geschaft in meinem StringGrid die Spalten zu Zentrieren oder Links bzw.Rechtsbündig anzeigen zu lassen
Delphi-Quellcode:
procedure TMDIChild.grdArtikelDrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
var InhaltZelle: string;
begin
  with (Sender as TStringgrid) do
    begin
      InhaltZelle := cells[acol, arow];// Zellinhalt in Variable auslesen
      canvas.fillrect(rect);// Zelle mit aktueller Hintergrundfarbe "übermalen"

      // 1. Spalte zentriert und mit Abstand nach oben
      if (acol = 0) then
         canvas.textrect(rect, (rect.Left + rect.Right -
         canvas.textwidth(InhaltZelle)) div 2, rect.top + 3, InhaltZelle);

      // 2. Spalte zentriert und mit Abstand nach oben
      if (acol = 1) then
         canvas.textrect(rect, (rect.Left + rect.Right -
         canvas.textwidth(InhaltZelle)) div 2, rect.top + 3, InhaltZelle);

      // 3. Spalte zentriert und mit Abstand nach oben
      if (acol = 2) then
         canvas.textrect(rect, (rect.Left + rect.Right -
         canvas.textwidth(InhaltZelle)) div 2, rect.top + 3, InhaltZelle);

      // 4. Spalte zentriert und mit Abstand nach oben
      if (acol = 3) then
         canvas.textrect(rect, (rect.Left + rect.Right -
         canvas.textwidth(InhaltZelle)) div 2, rect.top + 3, InhaltZelle);

      // 5. Spalte zentriert und mit Abstand nach oben
      if (acol = 4) then
         canvas.textrect(rect, (rect.Left + rect.Right -
         canvas.textwidth(InhaltZelle)) div 2, rect.top + 3, InhaltZelle);
      // 6. Spalte zentriert und mit Abstand nach oben
      if (acol = 5) then
         canvas.textrect(rect, (rect.Left + rect.Right -
         canvas.textwidth(InhaltZelle)) div 2, rect.top + 3, InhaltZelle);
      // 7. Spalte linksbündig mit Abstand nach links und oben
      if (acol = 6) then
         canvas.textout(rect.left + 3, rect.top + 2, InhaltZelle);

      // 8. Spalte linksbündig mit Abstand nach links und oben
      if (acol = 7) then
         canvas.textout(rect.left + 3, rect.top + 2, InhaltZelle);

      // Alle anderen Spalten rechtsbündig mit Abstand nach rechts und oben
      if (acol > 7) then
         canvas.textrect(rect, rect.Right - canvas.textwidth(InhaltZelle) - 4,
         rect.top + 2, InhaltZelle);
    end; // von with
end; // der Prozedur
jetzt versuche ich es schon eine ganze zeit lang das die Spalten auch eine optimale breite bekommen

wie muß ich dabei rangehen ?
könnt ihr mir hier helfen ?
  Mit Zitat antworten Zitat