Einzelnen Beitrag anzeigen

Benutzerbild von Smokey
Smokey

Registriert seit: 10. Nov 2003
Ort: Puerto de la Cruz
158 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Objekte dynamisch mit Form skalieren

  Alt 9. Jan 2004, 16:19
Gnah Anchors hätte mir heut echt etwas arbeit erspart, da ich heut vormittag resizing programmiert habe *fg*

Zu den Columns :
Ich habs so gelöst : Mir zur Designzeit die Werte für die Breiten des Grids und der einzelnen Spalten aufgeschrieben und daraus einen Breitenfaktor errechnet. Das sieht dann bei mir so aus :

Delphi-Quellcode:
//columns im grid
  iGridSize := DBGrid1.Width - 27; // 27 ist breite der vertikalen scrollbar
  dblFaktor := 68/722;
  DBGrid1.Columns.Items[0].Width := round(dblFaktor*iGridSize);
  dblFaktor := 102/722;
  DBGrid1.Columns.Items[1].Width := round(dblFaktor*iGridSize);
  dblFaktor := 91/722;
  DBGrid1.Columns.Items[2].Width := round(dblFaktor*iGridSize);
  dblFaktor := 107/722;
  DBGrid1.Columns.Items[3].Width := round(dblFaktor*iGridSize);
  dblFaktor := 105/722;
  DBGrid1.Columns.Items[4].Width := round(dblFaktor*iGridSize);
  dblFaktor := 81/722;
  DBGrid1.Columns.Items[5].Width := round(dblFaktor*iGridSize);
  dblFaktor := 100/722;
  DBGrid1.Columns.Items[6].Width := round(dblFaktor*iGridSize);
  dblFaktor := 68/722;
  DBGrid1.Columns.Items[7].Width := round(dblFaktor*iGridSize);

  //rundungsfehler korrigieren
  iTemp := 0;
  for i:= 0 to DBGrid1.Columns.Count -1 do begin
    iTemp := iTemp + DBGrid1.Columns.Items[i].Width;
  end;
  //gesamtbreite aller columns nach resize (iTemp) sollte gleichgross sein wie Gridbreite - Scrollbarbreite
  iTemp := iGridSize - iTemp;
  if not (itemp = 0) then
    //abweichungen werden durch resizen der Column Zone ausgeglichen
    DBGrid1.Columns.Items[1].Width := DBGrid1.Columns.Items[1].Width + iTemp;
Das mit den Rundungsfehlern kannste vermutlich weglassen, bei mir musste es nur sehr genau sein.

Das Resizen der Columns kannst auch vereinfachen indem du die Faktoren in ein Array packst oder so und dann (wie beim addieren unten) in einer Schleife die Columns einstellst.
Nur ich musste das schnell hinter mich bringen und hatte keine lust mir da was zu überlegen und habs dann so hingeschmiert 8)
Greif dir ein gutes Stück Fleisch auf deinem Weg nach draussen !!!
  Mit Zitat antworten Zitat