Avatar billede lavang Nybegynder
16. december 2004 - 23:17 Der er 2 kommentarer og
1 løsning

Hvordan centerer jeg tekst på TStringGrid?

Hej!
Jeg har problem med at centere tekst på en TStringGrid...Gid I nok hjælpe mig, please :)

Hilsen
Lavang
Avatar billede snowball Novice
16. december 2004 - 23:30 #1
Prøv dette:

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);

  procedure WriteText(StringGrid: TStringGrid; ACanvas: TCanvas; const ARect: TRect;
    const Text: string; Format: Word);
  const
    DX = 2;
    DY = 2;
  var
    S: array[0..255] of Char;
  begin
    with Stringgrid, ACanvas, ARect do
    begin
      case Format of
        DT_LEFT: ExtTextOut(Handle, Left + DX, Top + DY,
            ETO_OPAQUE or ETO_CLIPPED, @ARect, StrPCopy(S, Text), Length(Text), nil);

        DT_RIGHT: ExtTextOut(Handle, Right - TextWidth(Text) - 3, Top + DY,
            ETO_OPAQUE or ETO_CLIPPED, @ARect, StrPCopy(S, Text),
            Length(Text), nil);

        DT_CENTER: ExtTextOut(Handle, Left + (Right - Left - TextWidth(Text)) div 2,
            Top + DY, ETO_OPAQUE or ETO_CLIPPED, @ARect,
            StrPCopy(S, Text), Length(Text), nil);
      end;
    end;
  end;

  procedure Display(StringGrid: TStringGrid; const S: string; Alignment: TAlignment);
  const
    Formats: array[TAlignment] of Word = (DT_LEFT, DT_RIGHT, DT_CENTER);
  begin
    WriteText(StringGrid, StringGrid.Canvas, Rect, S, Formats[Alignment]);
  end;
begin
  // Right-justify columns 0-2
  // Spalten 0-2 rechts ausrichten.
  if ACol in [0..2] then
    Display(StringGrid1, StringGrid1.Cells[ACol, ARow], taRightJustify);

    // Center the first row
    // Erste zeile zentrieren
    if ARow = 0 then
      Display(StringGrid1, StringGrid1.Cells[ACol, ARow], taCenter)
  end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  StringGrid1.Cells[0,0] := 'Midten';
  StringGrid1.Cells[1,1] := 'Højre';
  StringGrid1.Cells[2,2] := 'Højre';
  StringGrid1.Cells[3,3] := 'Venstre';
end;

Alt efter hvordan du vil have det lavet - altså om det er hele grid'et eller blot nogle rækker eller kolonner - tilpasser du blot "if ARow = 0 then" delen af koden.
Avatar billede lavang Nybegynder
17. december 2004 - 00:18 #2
hej snowball! det virker helt perfekt. tak for det.
jeg har klikket på accepteret 3 gange uden det vil tage imod..

hilsen
lavang
Avatar billede snowball Novice
17. december 2004 - 08:03 #3
Du skal huske at klikke på mit navn i boksen til venstre inden du klikker på Accepter :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester