[ sapet @ 28.09.2004. 17:26 ] @
Veliki problemi za pocetnika. Pomagajte. Hitno

1. Kako da u DBGrid-u podesim multi sortiranje (col6,col3,col4);
2. U zavisnosti od vrednosti u nekoj celiji da boji ceo red;
3. DBEdit sa formatom 0,00.

HVALA unapred
[ Milos D @ 28.09.2004. 19:39 ] @
1. Mislis, sortiranje po proizvoljnom redosledu (kako korisnik pozeli)? Moze, ali grid mora biti povezan sa upitom, a ne tabelom, i moras da "ORDER BY" menjas po potrebi (tokom izvrsenja programa). Ako si pocetnik verovatno ti ovo bas i ne pomaze.

2. Opet nezgodno ako si pocetnik. Vidi OnDrawColumnCell event. Ako za njega napises ovakav kod:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Table1Field1.Value = 145
then dbgrid1.canvas.Brush.Color := clRed
else dbgrid1.canvas.Brush.Color := clWindow;
DBGrid1.DefaultDrawColumnCell (Rect, DataCol, COlumn, State);
end;

pri cemu je Table1Field1 ime TField objekta (polja u tabeli/upitu). Ako je vrednost 145, ceo red ce biti crven.

3. Nadji u field editoru zeljeno polje i postavi format na #.00 - ako je u Windows-u namesten zarez kao decimalni separator (umesto tacke), dobices to sto zelis.
[ morlic @ 28.09.2004. 20:44 ] @
Ah veciti problem, malo znanja puno zahteva :)

1. "Multi sortiranje" mozes uraditi na dva nacina: preko upita (kao sto je Milos D napisao) ili koristeci ClientDataSet komponentu. Nisam siguran sta je teze od ova dva za pocetnika :) Prva varijanta je staticna jer se kod promene redosleda i kolona po kojima se sortira mora ponovo izvrsiti upit, a kod druge varijante se sve desava nad jednom ucitanim podacima (ali se trazi malo naprednog kodiranja kako bi sve radilo kako treba). Ali ako imas hiljadu ili vise slogova prva varijanta je brza (i povecava se razlika sa brojem slogova) pod uslovom da koristis osobinu vecine SQL servera da uzimas samo onoliko slogova iz upita koliko je potrebno da prikazes korisniku na ekranu (PacketRecords <> -1 kod ClientDataSet-a, ili FetchAll = False kod nekih DataSet-ova).

2. Milos D je odgovorio.

3. isto
[ sapet @ 01.10.2004. 19:24 ] @
Da li je moguce da Access ima toliko elegantnija resenja, nego Delphi.
Ljudi moji, ono sto sam u Accessu uradio kao podrazumevanu stvar, sada mi u

Delphiju predstavlja neprelaznu prepreku. Naime, prvi projekat "TEKUCI RACUN"
u Delphiju ne mogu da ostvarim dok detaljno ne saznam kako se multi sortira.
Napravio sam u Query-ju, ali u njemu ne mogu da unosim nove podatke, kao u

tabeli. Pomozite da prohodam u Delphiju.
(
[ Milos D @ 01.10.2004. 20:40 ] @
Ako je taj multi-sort fiksan (npr. uvek se sortira prvo po prezimenu, pa imenu pa datumu) tj. korisnik ne moze da ga ne menja onda treba samo da napravis indeks sa odgovarajucim poljima za tu tabelu, i u TTable.IndexName postavis ime tog indeksa.
[ morlic @ 01.10.2004. 22:34 ] @
Moram da odgovorim na "napade" na Delphi :). Delphi je mnogo mocniji od Access-a samo sto moras da znas kako da aktiviras tu razliku. To sto ti ne znas ne znaci da ne moze. Delphi je namenjen programerima dok Access gadja i drugaciju publiku (da ne kazem ne-programere). Mozes da skines dodatne komponente za Delphi (npr. QuantumGrid) sa kojima mozes da odradis sta god ti padne napamet a tice se gridova.
[ marcha @ 02.10.2004. 08:20 ] @
Na toj paleti alata gde si odabrao TQuery imas i komponentu TUpdateSQL.
Povezivanjem tvog upita sa componentom TUpdateSQL dobijas "zivi" upit, sa kojim mozes bas sve (Modify, Delete, Insert).