Avatar billede tt2002 Nybegynder
10. september 2003 - 17:03 Der er 6 kommentarer og
1 løsning

Højrejustering i stringgrid

Hvordan får jeg højrejusteret teksten i en enkelt kolonne, række eller celle i et stringgrid?
Avatar billede Slettet bruger
10. september 2003 - 17:42 #1
Avatar billede tt2002 Nybegynder
10. september 2003 - 20:55 #2
er alt det virkelig nødvendigt?
Avatar billede Slettet bruger
10. september 2003 - 21:17 #3
Ved det ik, men jeg kunne ikke finde måder på at gøre det.
Avatar billede koden12 Nybegynder
11. september 2003 - 00:35 #4
StringGrid1.Rows[0][1].Align rigth
??
Måske
VH
Koden12
Avatar billede tolderlund Nybegynder
11. september 2003 - 08:53 #5
Det rigtige er at bruge OnDrawCell event som hejhej foreslår.
Når først man ser lyset mht OnDrawCell eventen, så er det meget nemt.
Da man selv kontrollerer visningen kan man vise teksten i hver celle nøjagtig som man vil.
Avatar billede koden12 Nybegynder
11. september 2003 - 11:38 #6
Så go er jeg ikke.... endnu..
VH
Koden12
Avatar billede Slettet bruger
11. september 2003 - 14:27 #7
Måske er det her lidt nemmere at bruge :-)

procedure HoejreJustereCell(StringGrid: TStringGrid; Col, Row: Integer);
  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;
    B, R: TRect;
  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, StringGrid.CellRect(Col, Row), S, Formats[Alignment]);
  end;
begin
  Display(StringGrid, StringGrid.Cells[Col, Row], taRightJustify)
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
    if ARow = 1 then
      HoejreJustereCell(StringGrid1, ACol, ARow);
    if ACol = 3 then
      HoejreJustereCell(StringGrid1, ACol, ARow);

    HoejreJustereCell(StringGrid1, 1, 4);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
col, row: Integer;
begin
for col := 1 to 4 do
for row := 1 to 4 do
begin
StringGrid1.Cells[col,row] := 'hej';
end;
end;
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

Seneste spørgsmål Seneste aktivitet
I går 10:21 Ny printer, men hvilken Af mort1 i Printere
13/0819:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging