Avatar billede jan_l Nybegynder
09. juni 2001 - 20:25 Der er 21 kommentarer og
1 løsning

StringGrids kan ikke opføre sig ordentligt

Jeg har flere StringGrids i mit program, og under WIN2000 ser de ud som de skal.
Hvis programmet derimod køres under W98-ME, så er det som at cellerne \"udvider\" sig, således at der kommer scrollbars frem.
Det ser mildest talt ikke særlig godt ud, og er ret irriterende.  :(

Jeg har en idé om at det har noget at gøre med en evt. forskel på den font som OS\'et bruger, men hva\' dælen kan jeg gøre for at undgå problemet.

Løsningen (der må være en!!)skal helst være ret enkel, da det ellers vil knibe med at få tid til at gøre noget ved problemet.

Mvh.
    Jan
Avatar billede pellelil Nybegynder
09. juni 2001 - 20:28 #1
Prøv at kigge i opsætningen af W98/ME det \"lyder som\" disse er sat op til at køre med \"Store fonte\". Er det en standard font du benytter ?
Avatar billede jan_l Nybegynder
09. juni 2001 - 20:57 #2
Jeg bruger den font som Delphi selv har valgt, der har jeg ikke pillet ved noget.(MS Sans Serif, regular, 8)

\"Store fonte\" var også mit første gæt, men det er ikke der problemet ligger, da han kører med \"small fonts\" (standard).

Det underlige er at problemet kun er der under W98-ME, og ikke under WIN2k.
Dette gælder både på min maskine og den anden.
Det er som W98-ME bruger en anden og større font end WIN2000.

Når jeg bruger ovenstående font i Delphi, er det så denne font der benyttes på den maskine som programmet køres på, (under forudsætning af at den er installeret på maskinen), eller bruger programmet en eller anden \"default\" font som styresystemet specificerer?
Avatar billede pellelil Nybegynder
09. juni 2001 - 21:19 #3
Prøv at \"rode med\" din forms AutoScroll/AutoSize
Avatar billede jan_l Nybegynder
09. juni 2001 - 22:00 #4
Det er i StringGrid\'ene der kommer scrollbars.
Det er som om cellerne bliver større under W9x, og den eneste årsag jeg umiddelbart kan se til dette er, at der måske er forskel på den font som systemet bruger.
Er (MS Sans Serif, Regular, 8) ikke en normal default font eller hvad?

Jeg vil helst undgå at folk skal til at rode med scrollbars, for at kunne smide værdier i stringgrids\'ene.

Det kan jeg selvfølgelig undgå ved at slå scrollbars fra, men så kan der være en hel række i stringgrid\'et der ikke kan ses.

Nu ved jeg ikke om det kun er dig der har set mit spørgsmål, men det skulle da undre mig, hvis det kun er mig der har rendt ind i dette problem.
Det kunne være spændende at høre hvad andre evt. har gjort for at undgå/løse det.
Avatar billede martinlind Nybegynder
09. juni 2001 - 22:42 #5
Det er nok skærmopl. der er forskelig, så du må løse det ved at tilpasse dine colwidths[] runtime i forhold til clientwidth

/Martin
Avatar billede jan_l Nybegynder
09. juni 2001 - 23:35 #6
Det gør ingen forskel hvilken opløsning skærmene kører i.
Jeg har to monitorer på min PC, hvor den ene kører 1152x864 og den anden kører 1024x768. Jeg har også prøvet 800x600.

Der er to måder, som jeg har prøvet, hvor jeg får problemet, og det er hvis jeg sætter systemet til at bruge \"Large fonts\", eller hvis jeg kører programmet under W9x.

- Jeg har prøvet at lægge nogle screenshots ud, som i kan se... Håber jeg...
Jeg har ikke prøvet at oprette en webserver før !!!

http://212.242.202.126/
Avatar billede jan_l Nybegynder
09. juni 2001 - 23:52 #7
Det går nok ikke så hurtigt, da jeg kun har 128kb upstream.
Avatar billede martinlind Nybegynder
10. juni 2001 - 10:25 #8
Jeg tror nu stadig det er et eller andet selvforskyldt, de to første stod jo godt nok, prøv evt. at lave dem 1 pixel bedre og højre, hvis du først får en scrollbar på udløser det den anden, du kan også prøve at sætte din FormStyle til en dialog.

/Martin
Avatar billede jan_l Nybegynder
10. juni 2001 - 11:52 #9
Nu har jeg fundet en måde at løse det på !!!
Jeg forstår stadig ikke, hvad der går galt... Whatever!!!!

Jeg har lavet rammen der omgiver cellerne meget for stor, givet SG\'et en baggrundsfarve der svarer til den PageControl det ligger på, og herefter har jeg farvet de enkelte celler, som jeg gerne vil have dem.

procedure TForm1.sgMomentsDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
    cellColor : TColor;
begin
with sgMoments do
begin
  case ACol of
  0: CellColor := clSilver;
  1,2,3,4 : Begin
              if (ARow >= 1)and (ARow <= 14) then
              cellColor := clWhite
              else
              cellColor := clSilver;
            end;
  end;
  Canvas.Brush.Color := cellColor;
  Canvas.FillRect(Rect);
  Canvas.TextOut(Rect.Left+2,Rect.Top+2,Cells[ACol,ARow]);
end;
end;

En lidt træls og bøvlet løsning, men det virker :)
Avatar billede jan_l Nybegynder
10. juni 2001 - 11:59 #10
\" and (ARow <= 14) \" kan selvfølgelig bare fjernes.  :)
Avatar billede martinlind Nybegynder
10. juni 2001 - 12:02 #11
Jan >> Er det for mange Rækker eller Coloner du får, det ser lidt ud på koden som om det er rækker, så når sg\'en sætter en scrollbar i siden får du også en forneden, men det kan du jo overveje at slå fra med Proprtyen ScrollBars, sæt den evt. ssVertical så får du scrollbar i siden, altid og kan så designtime tilpasse breden, du kan også overveje at lave noget autosize-logik, men det er lidt langhåret at få til at virke ordenligt.

/Martin
Avatar billede jan_l Nybegynder
10. juni 2001 - 12:22 #12
Jeg får ikke for mange rækker og kolonner, der er det rigtige antal, det er bare som om cellerne bliver hhv. bredere OG højere ???

Jeg synes at det ser ud som om der er forskel på den font der anvendes i de to OS\'er.
Har StringGrids mon en eller anden indbygget funktion, der gør at de tilpasser sig den systemfont der anvendes?
Er der nogen der ved, hvad font hhv. W9x og W2k bruger.

Jeg har prøvet at slå scrollbars fra, men så sker der bare det at cellerne stadig \"udvider\" sig, og der er dermed en række som ligger delvist uden for det synlige område.
Man kan dog stadig få adgang til cellen ved at bevæge sig ned til den vha. piletasterne.

Jan
Avatar billede martinlind Nybegynder
10. juni 2001 - 12:28 #13
Det kan godt være at det er et font problem, med delphi gør ikke noget, windows gør noget hvis du bruger en font der ikke er i W9x, det kunne jo også være du havde fået sat din font size til noget andet, eller ??, det er ihvert fald ikke stringgrid\'en der gør noget, for så ville den gøre noget på alle siderne, og det gør den jo ikke kan jeg se. Du kan evt. lægge koden pakket uden exe. samme sted som pic. så henter jeg det ned og kigger på det.

/MArtin
Avatar billede jan_l Nybegynder
10. juni 2001 - 12:32 #14
Så ligger den der.

876kb
Avatar billede martinlind Nybegynder
10. juni 2001 - 13:30 #15
Kigger på det, senere idag
Avatar billede martinlind Nybegynder
11. juni 2001 - 13:28 #16
Hej Jan, jeg kan ikke se noget der kan forklare dit problem, men jeg kan se på dine skærm dump at det ikke er alle dine grids der har et problem, så jeg tror det ligger på den w9x du tester på, dens skærm drv. eller lign, men prøv at smid en knap på din main form, nede i bunden, og lav en onclick event på den hvor du sætter denne kode ind, så kan du ved selvsyn se at dine grid colwidths ikke er forskellige i win2000/W9x

// Tilføjet til test formål !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

function MakeGridString( Sg : TStringGrid ) : String;
VAR
  Cnt : Integer;
begin
  Result := \'\';
  for Cnt := 0 to Sg.ColCount-1 do
  begin
      Result := Result + Format(\'No - Width : %d %d\',[Cnt,Sg.ColWidths[Cnt]])+#10#13;
  end;
end;

// !!!  OnClick Event !!!!!

procedure TForm1.Button1Click(Sender: TObject);
VAR
  Strx : String;
begin
  Strx := \'\';
  case PageControl1.ActivePageIndex of
    0 : begin
            Strx := MakeGridString(sgDimensions1);
            Strx := Strx + MakeGridString(sgDimensions2);
        end;
    1 : begin
            Strx := MakeGridString(sgMaterials);
        end;
    2 : begin
            Strx := MakeGridString(sgLoads);
            Strx := Strx + MakeGridString(sgMoments);
        end;
    3 : begin
            Strx := MakeGridString(sgAddCond);
        end;
  end;
  ShowMessage(Strx);
end;
// Tilføjet til test formål !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


/Martin
PS. Kender du forresten de folk i havde ansat i KBH. i engang
Avatar billede jan_l Nybegynder
11. juni 2001 - 19:56 #17
\" PS. Kender du forresten de folk i havde ansat i KBH. i engang \"


øøøøøhhh,  ??????
Avatar billede martinlind Nybegynder
11. juni 2001 - 20:19 #18
Ja, den splas screen du har der står et firma navn, der har haft kontor i KBH, for nogle år siden.
Avatar billede jan_l Nybegynder
11. juni 2001 - 20:58 #19
Okay, så er jeg med. :)

Nej, jeg kender kun til ham, jeg har som kontaktmand. Jeg er kommet i forbindelse med firmaet via min vejleder på AUE, som fortalte at de havde et problem, de godt kunne tænke sig at få en studerende til at kigge på.

NB.
AUE står for.... hold fast:
Aalborg Universitet Esbjerg... Kulret navn, ik\'?
:)
Avatar billede martinlind Nybegynder
11. juni 2001 - 21:00 #20
Det må man sige
Avatar billede jan_l Nybegynder
11. juni 2001 - 21:09 #21
Bortset fra det, så har jeg ikke glemt din kode, men jeg sidder og skal have afsluttet noget regneri, som jeg er nødt til at have klar til i morgen tidlig.
Lige så snart jeg har fået styr på det, så får jeg kigget på Delphi halløj\'et.
Avatar billede jan_l Nybegynder
09. juli 2001 - 00:11 #22
Hej martinlind

Hold ...., hvor gik der kage i det her halløj.
(ikke i programmet, men i det andet jeg havde gang i).

Nu er projektet lykkeligt overstået, og jeg kan fortælle at jeg, takket være din og andres hjælp her på Eksperten, fik et flot 11-tal for mit projekt. :-D

Nu har jeg så en del andre ting jeg lige skal have styr på, og så vil jeg sågu ha\' fundet ud af hvad problemet helt præcist er med de stringgrids.

PS
Blot en lille reminder om at jeg ikke har glemt dig.....  ;)
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