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

Dodavanje event-a u kontrolu

[es] :: Pascal / Delphi / Kylix :: Dodavanje event-a u kontrolu

[ Pregleda: 2627 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Dodavanje event-a u kontrolu17.09.2008. u 10:21 - pre 190 meseci
Kreirao sam kontrolu koja je nasljednik TDBEdit-a

postoji event: OnExit

kako dodati event: BeforeExit koji bi se startao prije izlaska iz kontrole, i prije pokušaja upisa podatka u tablicu.

Problem je kako kontrolirati korisnikov upis tako da program ne javi pogrešku prilikom izlaska iz TDBEdit-a ako je npr. field TDate, a korisnik je upisao podatak koji se ne može upisati kao datum.

Isto tako bih npr korisnikov upis: "01" atumatski pretvarao u "01.takuči mjesec.tekuća godina" i još ponešto, ali za sve mi treba event koji se starta prije upisa u tablicu.
 
Odgovor na temu

Markanto
Marko Antolović
admin, zk
Buševec

Član broj: 184593
Poruke: 55
*.adsl.net.t-com.hr.



+3 Profil

icon Re: Dodavanje event-a u kontrolu17.09.2008. u 11:45 - pre 190 meseci
Zasto ne stavis DateTimePicker?
Stavis da ti u DateTimePickeru datum prikazuje danasnji.
Onda samo mijenjas dan.
Tako korisnik ne moze staviti nista osim datuma!

Ili taj dio mozes napraviti na onKeyDown!
Ako je unesena vrijednost datum onda izadji, a ako nije onda
me napravi npr. setFocus na taj TDBEdit.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Dodavanje event-a u kontrolu17.09.2008. u 13:56 - pre 190 meseci
> Kreirao sam kontrolu koja je nasljednik TDBEdit-a
> postoji event: OnExit
> kako dodati event: BeforeExit koji bi se startao prije izlaska iz kontrole, i prije pokušaja upisa podatka u tablicu.

Možeš overajdovati DoExit, uraditi šta želiš i po potrebi pozvati inherited DoExit (koji poziva OnExit).

 
Odgovor na temu

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Re: Dodavanje event-a u kontrolu17.09.2008. u 20:14 - pre 190 meseci
lakše je s TEdit kontrolom, tj. napravio sam kontrolu TDateEdit kao nasljednika TEdit.
U njoj sam definirao

fDataSource: TDataSource;
fDataField: TField;

published
property DataSet: TIBDataSet read GetDataSet write SetDataSet;
property DataField: TFied read fDataField write fDataField;

...

vezao sam se na procedure AfterPost i BeforePost tako da odradim što mi treba i osvježim podatak koji se prikazuje, to je ok.

e, sad što me muči:

kako dobiti da mi Object Inspector za property DataField nudi samo field-ove iz dodjeljenog DataSeta. Sada mi nudi sve fieldnove, iz svih DataSet-ova koji su na formi (ili vidljivi preko uses iz drugih formi)

moža preko kreiranja tipa:

type
fSetField=(Field1, Field2...);

taba bih definirao

property DataField: fSetField

ali, kako dinamički kreirati set budući da unaprijed ne znam field-ove?


 
Odgovor na temu

priki

Član broj: 24732
Poruke: 700
84.255.195.*

ICQ: 174153511


+26 Profil

icon Re: Dodavanje event-a u kontrolu01.10.2008. u 14:22 - pre 189 meseci
bolje uzmi neki drugi način za rešavanje toga
pošto je takva kontrola krajnje jednostavna

a za recimo dodavanje nekog eventa ide ovako
(u zavisnosti koji dodaješ i kad)

Code:

... deklaracija klase

private
  procedure ExitDateEvent(Sender: TObject)

procedure TMojaForma.FormCreate(Sender: TObject);
begin
  dbInvoiceDate.OnExit := ExitDateEvent;
end;

procedure TMojaForma.ExitDateEvent(Sender: TObject)
begin
{
   kod koji nesto radi sa recimo:
  TDBEdit(Sender).Text
}
end;
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
*.grappoloin.com.



+62 Profil

icon Re: Dodavanje event-a u kontrolu01.10.2008. u 15:42 - pre 189 meseci
Ja predlazem da se vratimo na pocetak :) , odnosno na TDBEdit. Evo malo koda:

Code:

  TDBEditModifExit = class(TDBEdit)
  private
    procedure CMExit(var Msg: TCMExit); message CM_EXIT;
  protected
    { Protected declarations }
  public
    { Public declarations }
  published
    { Published declarations }
  end;


i jos

Code:

  procedure TDBEditModifExit.CMExit(var Msg: TCMExit);  
  begin
    ShowMessage('Ovo je pre inherited CMExit()'); // ovde se zapravo izmeni text po nahodjenju
    inherited;
  end;


A evo sta radi kod u inherited (originalnoj) metodi:

Code:

  procedure TDBEdit.CMExit(var Message: TCMExit); 
  begin
    try
      FDataLink.UpdateRecord;
    except
      SelectAll;
      SetFocus;
      raise;
    end;
    SetFocused(False);
    CheckCursor;
    DoExit;
  end; 


Ja sam pokusao ovo, i dobio sam taj ShowMessage iz prve (cak i bez "kacenja" na bazu); znaci, trebalo bi da radi.

Rajko
 
Odgovor na temu

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Re: Dodavanje event-a u kontrolu02.10.2008. u 11:29 - pre 189 meseci
Nisam vidio odgovore. Hvala na pomoči.

Problem sam rješio malo zaobilazno: Uzeo sam kompletnu definiciju TDBEdita, promjenio mu ime u TDBDateEdit i sve što sam trebao je napraviti override KeyDown i KeyPress. Sve što mi je trebalo sam stavio unutra.

Kontrola radi odlično.

Neke od stvari zbog kojih sam radio svoju kotrnolu:
- nije potrebno unositi "." - sam zna gdje je i dodaje automatski. npr: nakon unosa "12" pritiskom na "3" će formiati tekst: "12.3"
- dozvoljava unos nepostoječeg datuma do trenutka izlaza iz kontrole. npr: 31.02.2008. Ovo zato što me mućila izmjena datuma u dtpickeru koji ovo ne dozvoljava, pa se izmjena datuma sa npr 28.02.2008 na 31.03.2008 mora početi od mjeseca
- umjesto "." prihvača bilo što osim numerika
- "+" i "-" na num. tastaturi mijenjaju dan, sa CTRL - mjesec, sa ALT godinu
- SPACE - postavlja tekući datum
- izmjena podatka ne briše ciji datum, mijenja se samo dan, mjesec ili godina
- podatak koji se ostavi prazan (d,m ili g) popunjava s trenutnim.
 
Odgovor na temu

priki

Član broj: 24732
Poruke: 700
84.255.195.*

ICQ: 174153511


+26 Profil

icon Re: Dodavanje event-a u kontrolu02.10.2008. u 12:13 - pre 189 meseci
pardon, loše pročitano :)
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Dodavanje event-a u kontrolu

[ Pregleda: 2627 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

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