StringGrid1DrawCell vykreslovaní (Delphi)

Programovacie jazyky, rady, poradňa...
BigSandy
Amateur
Amateur
Príspevky: 24
Registrovaný: 25 nov 2011, 6:40

StringGrid1DrawCell vykreslovaní (Delphi)

Príspevok od používateľa BigSandy »

Zdravím.
Muže mi někdo řict kde dělam kopanec.
Toto fungovalo dokud jsem vkladal hodnoty do sloupce 11 přimo s form.
Když jsem zdrojak překopal a vkladam hodnoty s vlakna, funguje to ale vykresluje až když přesunu form mimo obrazovku a pak zpět nebo přeroluji tabulku.

Kód: Vybrať všetko

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
CV: TCanvas;
sCellString: String;
I: integer;
neni: boolean;
begin
  with TStringGrid(Sender) do
   begin
      canvas.Brush.Color := clWindow;
      Canvas.FillRect(Rect);
      if (ACol=0) then
      begin
         if (StringGrid1.Cells[11, ARow]='rsTimeOut') then
            ImageList.Draw(Canvas,Rect.Left,Rect.Top,0);
            ImageList.Draw(StringGrid1.Canvas, Rect.Left+4 , Rect.Top +4 , 0);
      end
      else
         Canvas.TextOut(Rect.Left, Rect.Top, Cells[ACol, ARow]);
   end;
Prostě připrocedura DrawCell při vkladaní hodnot s vlakna nezjisti že do bunky bylo něco zapsano a nepovažuje za nutnost překreslovat.
Hodnoty do bunky zapisuji přes proceduru, kterou ve vlaknu volam Synchronize(zapis);
dykeer
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 102
Registrovaný: 02 jan 2011, 21:21
Kontaktovať používateľa:

Re: StringGrid1DrawCell vykreslovaní (Delphi)

Príspevok od používateľa dykeer »

Neviem, napadla ma len myšlienka, že či mu netreba dať ešte v tom synchronize nejaký príkaz na prekreslenie, napr. Repaint;
Len neviem či sa dá dať Repaint na konkrétnu bunku alebo treba dať na celý grid.
BigSandy
Amateur
Amateur
Príspevky: 24
Registrovaný: 25 nov 2011, 6:40

Re: StringGrid1DrawCell vykreslovaní (Delphi)

Príspevok od používateľa BigSandy »

dykeer napísal:Neviem, napadla ma len myšlienka, že či mu netreba dať ešte v tom synchronize nejaký príkaz na prekreslenie, napr. Repaint;
Len neviem či sa dá dať Repaint na konkrétnu bunku alebo treba dať na celý grid.
Dik moc.
Trefil jste se a ja na to čučel jak blb a nevšim si.
Ono je lepši vždy nechat problem par dni uležet.
Bylo tam StringGrid1.Repaint s toho form.
Nevim proč to nevyhodilo chybu.
Stačilo před to dat Form1 :mrgreen:
Form1.StringGrid1.Repaint;
dykeer
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 102
Registrovaný: 02 jan 2011, 21:21
Kontaktovať používateľa:

Re: StringGrid1DrawCell vykreslovaní (Delphi)

Príspevok od používateľa dykeer »

No vlákna majú svoju vlastnú politiku :)
Napísať odpoveď