[ PBranislava @ 24.05.2004. 13:25 ] @
Dinamicki sam kreirala komponente MaskEdit
me := TMaskEdit.Create(Self);
me.Name := 'MaskEdit' + IntToStr(n);
me.Text := '';
i takvih komponenata na formi imam vise; Posle kreiranja, menjam vrednost svojstva text, i hocu takve vrednost da upisem u bazu podataka. Kako to da uradim? Svaka vrednost iz MasEdit komponente je jedan slog u bazi.

Dajte mi bar ideju!
[ morlic @ 24.05.2004. 19:50 ] @
Pa generalno ideja treba da prati koncept pristupa podacima kroz npr. BDE ili DBExpress. Znaci ides kroz DataSet i citas i po potrebi menjas slogove. Ako sam shvatio dobro ti si za svaki slog tabele napravila jedan maskedit. Znaci moras da imas nacin kako da povezes maskedit komponente sa odgovarajucim poljima u tabeli, kao neki ID. Ali ovo vec lici na DBGrid tako da je pitanje zasto ne koristis vec gotovu komponentu.
[ byTer @ 24.05.2004. 20:45 ] @
Morlic lepo kaze. A samo mi se cini da kada se kreira komponenta mora da ima vlasnika a najbolje je da to bude forma na kojoj stoje.

Znaci TMaskedEdit.Create(FormOwner)
[ antix @ 25.05.2004. 01:19 ] @
čini mi se da će ovdje biti da treba postaviti

MaskEdit.Parent=parentControl

takođe treba da postaviš vrijednosti top,left,height,width
osobina kontrole...
[ PBranislava @ 25.05.2004. 12:59 ] @
Kao sto sam i napisala ranije da sam dinamicki kreirala komponente MaskEdit
me := TMaskEdit.Create(Self);
me.Name := 'MaskEdit' + IntToStr(n);
me.Text := '';
Komponenta ima i vlasnika, postavku MaskEdit.Parent i takodepostavku vrednosti top,left,height,width osobina kontrole...
i takvih komponenata na formi imam vise; Posle kreiranja, menjam vrednost svojstva text, i hocu takve vrednost da upisem u bazu podataka. Kako to da uradim, odnosno nacin kako da pozovem odredjenu MaskEdit komponentu i ucitam vrednost koju sam upisala i upisem u bazu podataka. Svaka vrednost iz MasEdit komponente treba da je jedan slog u bazi.
[ antix @ 25.05.2004. 15:58 ] @
nisam siguran da sam te shvatio?!! Pitaš kako da
pozoveš neku komponentu. Pa preko imena. Možda ti je
najbolje da te komponente staviš u niz pa da prođeš kroz
niz i uzimaš Text value svake komponente i stavljaš u bazu.
[ PBranislava @ 26.05.2004. 10:43 ] @
Uredu, ja cu kreirati niz koji ce imati n clanova. Kako da se sad obratim osobini tekst komponente cije je ime u nizu, jer mi ta vrednost treba za unos u bazu.
Dakle, osnovni problem mi je sto je ime komponente promenljiva, ja ne znam kako da im se kao takvim obracam.
[ vladab @ 26.05.2004. 11:17 ] @
var a : string;

...
a:=maskedit.text
...

tako pristupas vrednosti text-a koju menjas u toku programa...
Ako ne znas koliko ih imasw stavi neki brojac...
:O)
Sto se tice upisa u bazu, zavisi od baze koju koristis. Npr za mysql lepo skines zeoslib, povezes se na bazu, stavis na formu updateSQL (ili tako nesto, sad nisam kuci, a nisam radio skoro sa bazama) i query koji ce ti to uneti u bazu...
Postoji i mnogo elegantnije resenje kao sto je DBEdit, oko koga ne moras da se mucis...

PS Mozda sam gresio u imenima komponenti, ali trazila si ideju... :)
[ burner @ 27.05.2004. 21:34 ] @
Probaj na sledeći naćin. Postavi neki TButton (npr. Button 1) i onda napiši sledeći kod
za njegov OnClick event(pogledaj help ako nije baš sve OK sa sintaksom, pišem napamet):

Procedure Button1.Click(Sender: TObject);
var
i: integer;
begin
for i:=0 to ComponentCount-1 do
begin
If Component is TEdit // pretpostavka da si unosila tekst u TEdit polja
then
begin
With Dataset1 to // priprema dataseta i unos texta
begin
insert;
Fields[0].AsString:=(Component as TEdit).Text;
post;
end; // with
end; // if
end; // for
end; // onclick procedure

[ byTer @ 27.05.2004. 22:18 ] @
A sto jednostavno ne kreiras DBEdit polja?! Onda im samo dodelis datasource property?
[ antix @ 28.05.2004. 00:56 ] @
i:integer;
for i:=1 to niz.size() do
begin
MaskEdit m=(niz as maskedit);
m.text....
// i ovdje sada ostale radnje...

end;


otprilike bi ovako izgledalo ali moras da prilagodis.
Milslim da je i ovo jasno...
[ Rapaic Rajko @ 04.06.2004. 12:39 ] @
Auh, bas svasta...
Dakle, ako imas ime komponente, treba da pozoves ovako nesto:
Code:

var 
  MyMaskEdit: TMaskEdit;
  anyname: string;
begin
  anyname := 'nekitamoname';
  MyMaskEdit := Form1.FindComponent(anyname) as TMaskEdit;
  MyMaskEdit.Text := ....;
end;


Pogledaj u help-u detalje metode FindComponent(). Da bi ovo radilo, svi tvoji komponenti moraju biti kreirani sa owner-om postavljenim na Form1 (upravo kao u tvom primeru).
Pozdrav

Rajko