Strona 1 z 1

Ja użyć funkcji ScaleRect()

Nowy postNapisane: czwartek, 6 września 2012, 13:25
przez duf
Maluję na DBGrid ikonki w odpowiednich kolumnach ale zawsze umieszczane są na początku komórki. Chciałbym mieć możliwość określania miejsca w poziomie komórki gdzie ikonka ma się pokazać. Wydaje mi się, że służy do tego funkcja ScaleRect() ale nie znalazłem przykładu jak jej można użyć. Podaje przykład jak umieszczam ikonki w komórkach.
Kod: Zaznacz cały
ImageList1->GetBitmap( Index, bitmap );
intWidth = (Rect.Bottom - Rect.Top);
fixRect.Right = Rect.Left + intWidth;
DBGrid1->Canvas->StretchDraw( fixRect, bitmap ); 

Proszę o sugestie.

Re: Ja użyć funkcji ScaleRect()

Nowy postNapisane: czwartek, 6 września 2012, 14:11
przez Mironas
Zwiększ fixRect.Left

Re: Ja użyć funkcji ScaleRect()

Nowy postNapisane: czwartek, 6 września 2012, 15:12
przez duf
Kod: Zaznacz cały
fixRect.Left = 1;

Dzięki. Jeżeli o to Ci chodzi to żadna wartość dodatnia ani ujemna nie powoduje przesunięcia ikony w prawo. Ikona jest rozciągnięta na pozostałe komórki.

Re: Ja użyć funkcji ScaleRect()

Nowy postNapisane: czwartek, 6 września 2012, 16:28
przez Mironas
Napisałem zwiększ a nie ustaw na 1. Czyli np.:
KOD cpp:     UKRYJ  
  int margines = 20;

  ImageList1->GetBitmap( Index, bitmap );
  intWidth = (Rect.Bottom - Rect.Top);
  fixRect.Left += margines;    // tutaj zwiększam
  fixRect.Right = Rect.Left + intWidth + margines;    // tutaj też może być konieczne
  DBGrid1->Canvas->StretchDraw( fixRect, bitmap );
 

Re: Ja użyć funkcji ScaleRect()

Nowy postNapisane: czwartek, 6 września 2012, 18:48
przez duf
Mironas napisał(a):Napisałem zwiększ a nie ustaw na 1.

Słuszna uwaga. Dziękuję, działa.