Avatar billede skindbeni Nybegynder
01. maj 2006 - 16:20 Der er 4 kommentarer og
1 løsning

Text align i en stringgrid

Hej.

Hvordan kan jeg få min tekst i en stringgrids fixede celleer til at være alignet centralt såvel horisontalt som veriticalt?

Samt få cellerne til at udvide / indskrænke sig automatisk afhængig af stringgridens størrelse (som ændrer størrelse afhængig af formen).

Jeg har ledt forgæves efter disse ting. Måske er de for komplicerede til at være skrevet i en "tips og trick" side på nettet.
Avatar billede stoney Nybegynder
01. maj 2006 - 19:02 #1
Avatar billede skindbeni Nybegynder
01. maj 2006 - 21:51 #2
Hej Stoney.

Den kode justerer godtnok cellerne, men min StringGrid ændrer en smule sit udseende. Den fjerner gridlines i den fixede øverste række, hvilket ser dumt ud - især da gridlines i den fixede kolonne stadig er der (med andre ord er det de lodrette gridlines, der er forsvundet).

Har du også et svar på, hvordan man automatisk kan resize cellerne, når stringgriden ændres i størrelse?
Avatar billede skindbeni Nybegynder
01. maj 2006 - 22:06 #3
Det sidste spørgsmål mht. resize fandt jeg alligevel efter endnu en søgning.

Men hvis der kan blive hjælp til mit første spørgsmål - inkl. hvordan man aligner veriticalt (top, center, bottom) så er der points på kontoen.
Avatar billede nop Nybegynder
10. maj 2006 - 23:52 #4
prøv at sætte stoney's eksempel ind i dit program og få det til at virke.
Højre klik på DT_LEFT fx, så finder du bla.: 

  {$EXTERNALSYM DT_TOP}
  DT_TOP = 0;
{$EXTERNALSYM DT_VCENTER}
  DT_VCENTER = 4;
  {$EXTERNALSYM DT_BOTTOM}
  DT_BOTTOM = 8;

Det er i unit Windows. Og de formaterer som du måske kan gætte teksten i vertikal top, center og bund.

--nop
Avatar billede nop Nybegynder
10. maj 2006 - 23:55 #5
prøv google: autosize stringgrid delphi
gjort her: http://www.google.dk/search?hl=da&q=autosize+stringgrid+delphi&btnG=S%C3%B8g&meta=

du finder som 4. link: http://www.festra.com/eng/mtut09.htm

som autosizer en kolonne:

procedure TForm1.AutoSizeCol(Grid: TStringGrid; Column: integer);
var
  i, W, WMax: integer;
begin
  WMax := 0;
  for i := 0 to (Grid.RowCount - 1) do begin
    W := Grid.Canvas.TextWidth(Grid.Cells[Column, i]);
    if W > WMax then
      WMax := W;
  end;
  Grid.ColWidths[Column] := WMax + 5;
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