Új hozzászólás Aktív témák

  • lao ce

    aktív tag

    válasz tusi74 #348 üzenetére

    tolem mindig valami bonyolultat olvasol.
    - canvas-t nem tudom magyarul, de vaszon (festo) ha leforditod szo szerint.
    - a nyolc az pixelben van. amolyan magic number, izles szerint.
    - ez a kod iszonyu, ezert nehez erteni kicsit.

    a TextWidth amire mi utazunk, es ez egy canvashoz kapcsolodik, tok mindegy hogy melyiket hasznaljuk. tobb canvas is van eppen hasznalatban, a stringgridnek es a formnak biztosan ott csucsulnek a canvasai.

    ha csak ugy siman benyogi az ember hogy canvast ide vazze, akkor a form canvasat erti a delphi. de, ha with...do is van, akko' eloszor megprobalja, hogy ami a with-be van irva annak van-e canvasa ha igen akkor azt hasznalja. aki irta ezt a programreszletet nyilvanvaloan nem volt tisztaban ezzel.

    namarmost.
    Canvas.Font := Font
    ez a sor hulyeseg. vedd ki a fenebe. megprobaltam leirni hogy miert hulyeseg, de inkabb 'gondolkozz rajta', mert 15 sor volt a magyarazat es en magam sem ertettem a vegen amit irtam...

    tudod mit? atirtam neked, mert igy legalabb ertheto mi tortenik, ne mar 6 soron muljon.

    // vegigmegy ket ciklussal a cellakon oszloponkent, kiolvassa a cella
    // szovegenek szelesseget (TextWidth), eltarolja a legnagyobb erteket
    // vegul beallitja az oszlopot a legnagyobb szelessegre
    for j := 0 to StringGrid1.ColCount -1 do begin
    ...maxSzeles := 0;
    ...for i := 0 to StringGrid1.RowCount -1 do begin
    ......aktSzeles := StringGrid1.Canvas.TextWidth(StringGrid1.Cells[j, i]) + 8;
    ......if aktSzeles > MaxSzeles then maxSzeles := aktSzeles;
    ...end;
    ...if maxSzeles > 0 then StringGrid1.ColWidths[j] := maxSzeles;
    end;

    lefogadom hogy igy mar teljesen vilagos mirol van szo. sot, talan a tanarok is elboldogulnak vele :)

Új hozzászólás Aktív témák