Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Sporo prikazivanje grida na OnDrawColumncell

[es] :: Pascal / Delphi / Kylix :: Sporo prikazivanje grida na OnDrawColumncell

[ Pregleda: 1342 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

captPicard
programer
more i planine

Član broj: 216084
Poruke: 1119



+19 Profil

icon Sporo prikazivanje grida na OnDrawColumncell10.09.2012. u 14:16 - pre 141 meseci
Znači u

Code:
procedure TFForma.DBGrid1DrawColumnCell


imam slijedeće:

Code:
  with Dataset do
  begin
    Close;
    SelectSQL.Text := 'select 1 from tablica where ' +
      'nesto= ' + QuotedStr(NekiDataset.FieldByName('sifra').AsString) + ' and oznaka = ''n'' ';
    Open;
    if RecordCount <> 0 then
      Grid.Canvas.Font.Color := clRed;
  end;

  Grid.DefaultDrawColumnCell(Rect, DataCol, Column, State);


i to radi jako sporo. Jasno mi je da on svaki puta kod novog reda ponovo pokreće upit, ali ne vidim kako drukčije da riješim (polje "oznaka" je u drugoj tablici, znači to polje nemam u podacima u gridu). Netko ima ideju, iskustva?

Hvala.
F
 
Odgovor na temu

aca andrijevic
aka LoGaN
Nis

Član broj: 35450
Poruke: 347
*.tico.rs.

ICQ: 325309560


+2 Profil

icon Re: Sporo prikazivanje grida na OnDrawColumncell10.09.2012. u 15:30 - pre 141 meseci
Da li si probao da upit pokreces kroz neki drugi event a ne u DrawColumnCell, jer bi
on pri svakom refreshu dataseta trebao da radi iscrtavanje prema parametrima.Ja na
primer imam samo ovo u nekom mom kodu:

Code:

procedure TfrmNekaForma.dgNekiGridDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
      if dsNekiDataSource.DataSet.FieldByName('neko_polje').AsString = 'n' then
        begin
          if Column.FieldName = 'ovo_je_to_polje' then
            begin
              dgNekiGrid.Canvas.Font.Color := clRed;
              dgNekiGrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
            end;
        end;
    end;
end;


I to radi svaki put kada se radi osvezavanje dataseta.
"Ne menjaj nesto sto te sasvim dobro sluzi, ne trazi leba preko pogace" - Aleksandar Andrijevic
 
Odgovor na temu

captPicard
programer
more i planine

Član broj: 216084
Poruke: 1119



+19 Profil

icon Re: Sporo prikazivanje grida na OnDrawColumncell10.09.2012. u 17:17 - pre 141 meseci
Napravio sam calculated field u prvom datasetu i sada to radi malo brže (makar opet nisam baš zadovoljan).
Ali hvala na savjetu.



F
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Sporo prikazivanje grida na OnDrawColumncell10.09.2012. u 17:31 - pre 141 meseci
Ne kontam bas sta hoces da prikazes u tom polju? Ako hoces da ti polje bude crveno u zavisnosti od toga da li u drugoj tabeli postoje recordi ili ne, pogledaj JOIN sql komandu.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Sporo prikazivanje grida na OnDrawColumncell11.09.2012. u 00:03 - pre 141 meseci
> i to radi jako sporo. Jasno mi je da on svaki puta kod novog reda ponovo pokreće upit, ali ne vidim kako drukčije da riješim (polje "oznaka" je u drugoj tablici, znači
> to polje nemam u podacima u gridu). Netko ima ideju, iskustva?

Čupaš podatke iz baze kod svakog refreša ćelije, to može biti više stotina puta u sekundi, možeš postupak optimizovati tako da kad je jednom dobijeno status za dati slog ne traži ga ponovo. A možeš uraditi unapred bilo kroz neko calculated polje bilo kroz join ili dodatni upit koji će odmah po otvaranju dataseta saznati i te dodatne stvari.

 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Sporo prikazivanje grida na OnDrawColumncell

[ Pregleda: 1342 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.