Announcement

Collapse
No announcement yet.

skallierbares dbgrid macht probleme

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • skallierbares dbgrid macht probleme

    hallo, <br>
    <br>
    hallo,

    ich habe auf einem formualr ein dbgrid platziert. bei einer grössenänderung sollen die einzelnen spalten des dbgrids<br> entsprechend skalliert werden. da ich ein
    delphi-programm habe, das dieses problem löst, versuchte ich den object pascal-code nach cpp zu übersetzen.<br> allerdings kenne ich in cpp keine funktion trunc (Die
    Funktion Trunc konvertiert eine Gleitkommazahl in einen Integer-Wert). folgender cpp code lässt sich zwar übersetzen, <br>arbeitet allerdings nicht wie gewünscht:<br>
    void __fastcall TForm1::FormCreate(TObject *Sender)<br>
    {<br>
    FOldG = Width;<br>
    //for (int i = 0; i < DBGrid1->Columns->Count - 1; i++)<br>
    int i = 0;<br>
    while (i <= DBGrid1->Columns->Count - 1)<br>
    {<br>
    FOldW[i] = DBGrid1->Columns->Items[i]->Width;<br>
    i++;<br>
    }<br>
    }<br>
    //---------------------------------------------------------------------------

    void __fastcall TForm1::FormResize(TObject *Sender)<br>
    {<br>
    double ScalX;<br>
    ScalX = Width / FOldG;<br>
    for (int i = 0; i <= DBGrid1->Columns->Count - 1; i++)<br>
    DBGrid1->Columns->Items[i]->Width = int(FOldW[i] * ScalX);<br>
    //static_cast(int)<FOldW[i] * ScalX>;<br>
    //<br>
    }<br>

    wobei FOldG ein int, und FOldW ein int-array ist (enthält die anzahl der dbgrid-columns).<br>
    für hilfe und tips bin ich dankbar.<br>
    mfg<br>
    andik

  • #2
    Versuch mal die Funktion FloatToStr(StrToInt(Gleitkommazahl)).
    Ist zwar mit Umweg und die Kommastellen werden auch nur abgeschnitten, aber es hilft

    Comment


    • #3
      Das Problem liegt an der Formel von ScalX.<br>
      Delphi hat zwei Operatoren zur Division von integern '/' und 'DIV'<br>
      '/' in C/C++ entspricht 'DIV' in Delphi<br>
      integer = integer / integer; // C/C++ <br>
      integer = integer div integer; // Delphi<br>
      <br>
      Um in C/C++ das gleiche zu bekommen wie '/' in Delphi macht man folgendes<br>
      float = integer / integer; // Delphi<br>
      float = integer / float(integer); // C/C++ typecast<br>
      <br>
      ScalX = Width / double(FOldG);<br&gt

      Comment

      Working...
      X