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

Kako uraditi dispatch control?

[es] :: Pascal / Delphi / Kylix :: Kako uraditi dispatch control?

[ Pregleda: 2155 | Odgovora: 18 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mr.zhile
Ivan ZHILE
C# developer

Član broj: 185721
Poruke: 249
91.150.114.*



+2 Profil

icon Kako uraditi dispatch control?25.10.2008. u 16:01 - pre 188 meseci
Imam fromu i na njoj nekoliko DBEdit-a svaki od DBEdita ima svoj dogadjaj OnExit na formi se nalaze i dva Button-a kojim se potvrdjuju izmene(odnosno odustaje od rada OK,CANCEL)...Moj problem je u tome sto kada se fokus nalazi u nekom od DBEdit-a i klikne se na bilo koje dugme prolazi se kroz svaki DbEdiit?
Od jednog lika sam saznao da se to moze resiti sa DISPATCH controlom,kako sam ga razumeo fora je napraviti objekat koji ce u sklopu dogadjaja OnExit ispitati dal je se preslo u sledeci Edit ili je kliktnuto na neki od button-a,a kako to radi ja pojma nemam ,a on je prezauzet da bi mi objasnjavao?
Ako moze neko objasnjenjeili pomoc mnogo cu vam bti zahvalan

[Ovu poruku je menjao mr.zhile dana 25.10.2008. u 18:53 GMT+1]
Don't worry be happy
 
Odgovor na temu

mr.zhile
Ivan ZHILE
C# developer

Član broj: 185721
Poruke: 249
91.150.114.*



+2 Profil

icon Re: Kako uraditi despatch control25.10.2008. u 17:52 - pre 188 meseci
AUUUUUUUUUU pa zar je toliko teska tema da niko ne odgovara?????!!!!!!!
Ljudi svaka informacija mi je dobro dosla,jer appsolutno ne znam kako da resim problem???
HVALA unaprede na bilo kom odgovoru!
Don't worry be happy
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Kako uraditi dispatch control?25.10.2008. u 18:15 - pre 188 meseci
> Moj problem je u tome sto kada se fokus nalazi u nekom od DBEdit-a i klikne se na bilo koje dugme prolazi se kroz svaki DbEdiit?

Razjasni.

> Od jednog lika sam saznao da se to moze resiti sa DISPATCH controlom, kako sam ga razumeo fora je napraviti objekat koji ce u sklopu
> dogadjaja OnExit ispitati dal je se preslo u sledeci Edit ili je kliktnuto na neki od button-a,a kako to radi ja pojma nemam

Konfuzno napisano, počni od početka i lepo kaži koji su problemi i šta želiš da postigneš.
 
Odgovor na temu

mr.zhile
Ivan ZHILE
C# developer

Član broj: 185721
Poruke: 249
91.150.114.*



+2 Profil

icon Re: Kako uraditi dispatch control?25.10.2008. u 18:49 - pre 188 meseci
Evo da razjasnim postavicu kompletan kod Unitaa date forme pa mislim da ce biti jasnje sta hocu
Code:

unit UPrikazIzmenaClanova;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Mask, DBCtrls, Buttons, DBXpress, FMTBcd,
  SqlExpr, DB, DBClient, SimpleDS;

type
  TfrmPrikazIzmenaClanova = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    DBEdit6: TDBEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    DBText1: TDBText;
    DBMemo1: TDBMemo;
    Label7: TLabel;
    DataSource1: TDataSource;
    SimpleDataSet1: TSimpleDataSet;
    procedure BitBtn1Click(Sender: TObject);
    procedure DBEdit2Exit(Sender: TObject);
    procedure DBEdit3Exit(Sender: TObject);
    procedure DBEdit4Exit(Sender: TObject);
    procedure DBEdit5Exit(Sender: TObject);
    procedure DBEdit6Exit(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    FID:integer;
    FPisanje:boolean;
    procedure DozvolaPisanja;
    procedure PostojiBrLK;
  public
    function PraznoPolje(Text:String):boolean;
    procedure OtvoriSifru(Id:integer;Pisanje:boolean);
    function OtvorenRekord(BrRekorda:Integer):boolean;
  end;

var
  frmPrikazIzmenaClanova: TfrmPrikazIzmenaClanova;

implementation

uses UdmBiblioteka, global, ULogIn;

{$R *.dfm}
var
   TD:TTransactionDesc;

procedure TfrmPrikazIzmenaClanova.BitBtn1Click(Sender: TObject);
begin
   SimpleDataSet1.Close;
   Close;
end;

procedure TfrmPrikazIzmenaClanova.DozvolaPisanja;
var
   i:integer;
begin
   for i:=0 to ComponentCount-1 do
      begin
         if Components[i] is TDBEdit then
            (Components[I] as TDBEdit).ReadOnly:=not FPisanje;
      end;
end;

procedure TfrmPrikazIzmenaClanova.OtvoriSifru(Id: integer;
  Pisanje: boolean);
var
   SQL:String;
begin
   FID := id;
   FPisanje := Pisanje;

   td.TransactionID := 5;
   td.IsolationLevel := xilREADCOMMITTED;
   sql := 'select * from Clan where id = '+ IntToStr(FID);

   SimpleDataSet1.Close;
   SimpleDataSet1.DataSet.CommandText:=SQL;
   dmBiblioteka.SQLConn.StartTransaction(TD);
   SimpleDataSet1.Open;
   dmBiblioteka.SQLConn.Commit(TD);
   if FID=-1 then
      begin
         dmBiblioteka.spID_Clanovi.ExecProc;
         SimpleDataSet1.Append;
         SimpleDataSet1.FieldByName('ID').AsInteger:=dmBiblioteka.spID_Clanovi.Params[0].AsInteger;
      end
   else
      begin
         SimpleDataSet1.Edit;
      end;
   DozvolaPisanja;
end;


function TfrmPrikazIzmenaClanova.PraznoPolje(Text: String): boolean;
begin
   if text=''then
      Result:=true
   else
      Result:=false;
end;

procedure TfrmPrikazIzmenaClanova.DBEdit2Exit(Sender: TObject);
begin
   if PraznoPolje(DBEdit2.Text) then
      begin
         ShowMessage('Polje ' + DBEdit2.DataField + 'ne moze biti prazno');
         DBEdit2.SetFocus;
      end
   else
      begin
         PostojiBrLK;
      end;
end;

procedure TfrmPrikazIzmenaClanova.DBEdit3Exit(Sender: TObject);
begin
   if PraznoPolje(DBEdit3.Text) then
      begin
         ShowMessage('Polje ' + DBEdit3.DataField + 'ne moze biti prazno');
         DBEdit3.SetFocus;
      end
   else
      begin
         DBEdit4.SetFocus;
      end;
end;

procedure TfrmPrikazIzmenaClanova.DBEdit4Exit(Sender: TObject);
begin
   if PraznoPolje(DBEdit4.Text) then
      begin
         ShowMessage('Polje ' + DBEdit4.DataField + 'ne moze biti prazno');
         DBEdit4.SetFocus;
      end
   else
      begin
         DBEdit5.SetFocus;
      end;
end;

procedure TfrmPrikazIzmenaClanova.DBEdit5Exit(Sender: TObject);
begin
   if PraznoPolje(DBEdit5.Text) then
      begin
         ShowMessage('Polje ' + DBEdit5.DataField + 'ne moze biti prazno');
         DBEdit5.SetFocus;
      end
   else
      begin
         DBEdit6.SetFocus;
      end;
end;

procedure TfrmPrikazIzmenaClanova.DBEdit6Exit(Sender: TObject);
begin
   if PraznoPolje(DBEdit6.Text) then
      begin
         ShowMessage('Polje ' + DBEdit2.DataField + 'ne moze biti prazno');
         DBEdit6.SetFocus;
      end
   else
      begin
         BitBtn2.SetFocus;
      end;
end;

procedure TfrmPrikazIzmenaClanova.PostojiBrLK;
var
   SQL,broj:String;
begin
   broj:=DBEdit2.Text;
   sql:='select * from Clan where BR_LICNE_KARTE = ' + QuotedStr(broj);
   SimpleDataSet1.Close;
   SimpleDataSet1.DataSet.CommandText:=SQL;
   dmBiblioteka.SQLConn.StartTransaction(TD);
   SimpleDataSet1.Open;
   dmBiblioteka. SQLConn.Commit(TD);
   if SimpleDataSet1.RecordCount=0 then
      begin
         SimpleDataSet1.Append;
         SimpleDataSet1.FieldByName('id').AsInteger:=dmBiblioteka.spID_Clanovi.Params[0].AsInteger;
         SimpleDataSet1.FieldByName('BR_LICNE_KARTE').AsString:=broj;
      end;
   DBEdit3.SetFocus;
end;

procedure TfrmPrikazIzmenaClanova.BitBtn2Click(Sender: TObject);
begin
   if SimpleDataSet1.State in [dsInsert,dsEdit] then
      begin
         SimpleDataSet1.Post;
         dmBiblioteka.SQLConn.StartTransaction(TD);
         try
            if SimpleDataSet1.ApplyUpdates(0)=0 then
               begin
                  dmBiblioteka.SQLConn.Commit(TD);
                  SimpleDataSet1.Refresh;
                  Close;
               end
            else
               begin
                  UpisULog('Neuspesan pokusaj izmene podataka u bazi' + dmBiblioteka.SQLConn.Params.Values['Database']);
                  ShowMessage('Neuspesan pokusaj izmene podataka u bazi'#13#10 + dmBiblioteka.SQLConn.Params.Values['Database']);
                  dmBiblioteka.SQLConn.Rollback(TD);
               end
         except
            dmBiblioteka.SQLConn.Rollback(TD);
         end;
      end;
end;

function TfrmPrikazIzmenaClanova.OtvorenRekord(BrRekorda: Integer): boolean;
var
   i:Integer;
begin
   for i := 0 to Screen.CustomFormCount-1 do
      if (Screen.CustomForms[i] is TfrmPrikazIzmenaClanova) then
         if BrRekorda = (Screen.Forms[i] as TfrmPrikazIzmenaClanova).FID then
            begin
               Result := True;
               Break
            end
         else
            Result := False
      else
         Result:=False
end;

procedure TfrmPrikazIzmenaClanova.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
   frmPrikazIzmenaClanova.Free;
end;

end.
//EVO i DMF Forme
  Left = 358
  Top = 108
  Width = 369
  Height = 547
  ActiveControl = DBEdit2
  Caption = 'Prikaz / Izmena Clanova'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  OnClose = FormClose
  PixelsPerInch = 96
  TextHeight = 13
  object Panel1: TPanel
    Left = 0
    Top = 0
    Width = 361
    Height = 472
    Align = alClient
    BorderStyle = bsSingle
    TabOrder = 0
    object Label1: TLabel
      Left = 21
      Top = 8
      Width = 13
      Height = 16
      Alignment = taCenter
      Caption = '&ID'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -13
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      ParentFont = False
    end
    object Label2: TLabel
      Left = 21
      Top = 64
      Width = 125
      Height = 16
      Alignment = taCenter
      Caption = '&BROJ LIÈNE KARTE'
      FocusControl = DBEdit2
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -13
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      ParentFont = False
    end
    object Label3: TLabel
      Left = 21
      Top = 120
      Width = 23
      Height = 16
      Alignment = taCenter
      Caption = '&IME'
      FocusControl = DBEdit3
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -13
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      ParentFont = False
    end
    object Label4: TLabel
      Left = 21
      Top = 168
      Width = 59
      Height = 16
      Alignment = taCenter
      Caption = '&PREZIME'
      FocusControl = DBEdit4
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -13
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      ParentFont = False
    end
    object Label5: TLabel
      Left = 21
      Top = 224
      Width = 56
      Height = 16
      Alignment = taCenter
      Caption = '&ADRESA'
      FocusControl = DBEdit5
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -13
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      ParentFont = False
    end
    object Label6: TLabel
      Left = 21
      Top = 272
      Width = 110
      Height = 16
      Alignment = taCenter
      Caption = '&BROJ TELEFONA'
      FocusControl = DBEdit6
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -13
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      ParentFont = False
    end
    object DBText1: TDBText
      Left = 32
      Top = 40
      Width = 65
      Height = 17
      Alignment = taCenter
      DataField = 'ID'
      DataSource = DataSource1
    end
    object Label7: TLabel
      Left = 21
      Top = 328
      Width = 152
      Height = 16
      Caption = 'NAPOMENA_OPOMENA'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -13
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      ParentFont = False
    end
    object DBEdit2: TDBEdit
      Left = 20
      Top = 85
      Width = 121
      Height = 21
      DataField = 'BR_LICNE_KARTE'
      DataSource = DataSource1
      TabOrder = 0
      OnExit = DBEdit2Exit
    end
    object DBEdit3: TDBEdit
      Left = 20
      Top = 138
      Width = 121
      Height = 21
      DataField = 'IME'
      DataSource = DataSource1
      TabOrder = 1
      OnExit = DBEdit3Exit
    end
    object DBEdit4: TDBEdit
      Left = 20
      Top = 191
      Width = 121
      Height = 21
      DataField = 'PREZIME'
      DataSource = DataSource1
      TabOrder = 2
      OnExit = DBEdit4Exit
    end
    object DBEdit5: TDBEdit
      Left = 20
      Top = 244
      Width = 121
      Height = 21
      DataField = 'ADRESA'
      DataSource = DataSource1
      TabOrder = 3
      OnExit = DBEdit5Exit
    end
    object DBEdit6: TDBEdit
      Left = 21
      Top = 297
      Width = 121
      Height = 21
      DataField = 'TELEFON'
      DataSource = DataSource1
      TabOrder = 4
      OnExit = DBEdit6Exit
    end
    object DBMemo1: TDBMemo
      Left = 8
      Top = 344
      Width = 185
      Height = 89
      DataField = 'NAPOMENA_OPOMENA'
      DataSource = DataSource1
      ScrollBars = ssVertical
      TabOrder = 5
    end
  end
  object Panel2: TPanel
    Left = 0
    Top = 472
    Width = 361
    Height = 41
    Align = alBottom
    TabOrder = 1
    object BitBtn1: TBitBtn
      Left = 16
      Top = 8
      Width = 75
      Height = 25
      TabOrder = 0
      OnClick = BitBtn1Click
      Kind = bkClose
    end
    object BitBtn2: TBitBtn
      Left = 128
      Top = 8
      Width = 75
      Height = 25
      Caption = '&OK'
      TabOrder = 1
      OnClick = BitBtn2Click
      Kind = bkOK
    end
  end
  object DataSource1: TDataSource
    DataSet = SimpleDataSet1
    Left = 176
    Top = 72
  end
  object SimpleDataSet1: TSimpleDataSet
    Aggregates = <>
    DataSet.CommandText = 'select * from CLAN'
    DataSet.MaxBlobSize = -1
    DataSet.Params = <>
    Params = <>
    Left = 176
    Top = 136
  end
end


Znaci kad se forma kreira fiokus je na DBEDit2.Posto se u DBEditima nalaze polja baze br_licne karte,ime,prezime,....mora da se vrsi provera jer su neka od njih u bazi kao not null...ali ako se klikne na Cancel ili OK treba odmah da se izvrsi kod koji je vezan za njiih...medjutim kod mene se preskace iz edita u edit pa se to vrsi onoliko puta koliko edita ima,korisnik bi trrebao 5 puta da klikce na Ok,Cancal da bi obavio akcije...
Nadam se da sam malko razjasnio

@savkic
> Od jednog lika sam saznao da se to moze resiti sa DISPATCH controlom, kako sam ga razumeo fora je napraviti objekat koji ce u sklopu
> dogadjaja OnExit ispitati dal je se preslo u sledeci Edit ili je kliktnuto na neki od button-a,a kako to radi ja pojma nemam
Konfuzno napisano, počni od početka i lepo kaži koji su problemi i šta želiš da postigneš

Tebi konfuzno?A zamisli kako je tek meni
Rekao mi lik da se napravi objekat i da mu se prosledi kao dispatch sta je korisnik uradio,tj da li je kliknuo jedno od dugmadi ili je samo prebacio fokus na sledeci Edit?
Don't worry be happy
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Kako uraditi dispatch control?25.10.2008. u 19:22 - pre 188 meseci
> Znaci kad se forma kreira fiokus je na DBEDit2.Posto se u DBEditima nalaze polja baze br_licne karte,ime,prezime,....mora da se vrsi provera
> jer su neka od njih u bazi kao not null...ali ako se klikne na Cancel ili OK treba odmah da se izvrsi kod koji je vezan za njiih...medjutim kod
> mene se preskace iz edita u edit pa se to vrsi onoliko puta koliko edita ima,korisnik bi trrebao 5 puta da klikce na Ok,Cancal da bi obavio akcije...

Sam si ga tako programirao, po meni prva greška je kaskadno fokusiranje DBEdit boxova, druga validacija unetog sadržaja preko DBEdit kontrola.
Validacija treba da se radi u TField dataseta, ako sadržaj nije unet ili je pogrešno unet koristi se FocusControl metoda TFielda. Prelazak sa jednog polja na drugo najbolje je realizovati handlovanjem pritiska na Enter i strelice gore i dole, kada se pritisne enter pređe se na sledeću kontrolu i tako redom kao i da je tab pritisnut.

 
Odgovor na temu

mr.zhile
Ivan ZHILE
C# developer

Član broj: 185721
Poruke: 249
91.150.114.*



+2 Profil

icon Re: Kako uraditi dispatch control?25.10.2008. u 20:19 - pre 188 meseci
Citat:
Prelazak sa jednog polja na drugo najbolje je realizovati handlovanjem pritiska na Enter i strelice gore i dole, kada se pritisne enter pređe se na sledeću kontrolu i tako redom kao i da je tab pritisnut.


Kako hanblovanje da uradim?
Kako da sprecim to pomeraje izemdju DBEdita-a?
AKAko bi bilo dispatdh-ovanje kontrola sto mi je dao predlog onaj lik...?
Jel ima neki primercic da se nadje negde,ja se ubi trazeci nesto kako bi razumeo sta treba da radim?
Don't worry be happy
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Kako uraditi dispatch control?25.10.2008. u 23:49 - pre 188 meseci
> Kako hanblovanje da uradim?

http://www.elitesecurity.org/t296741-0#1763928

> Kako da sprecim to pomeraje izemdju DBEdita-a?

Obriši kod koji to radi, svi OnExit handleri su višak.

> AKAko bi bilo dispatdh-ovanje kontrola sto mi je dao predlog onaj lik...?

U tom delu ne mogu pomoći, nejasno je šta to predstavlja, traži dodatna razjašnjenja.
 
Odgovor na temu

mr.zhile
Ivan ZHILE
C# developer

Član broj: 185721
Poruke: 249
79.101.210.*



+2 Profil

icon Re: Kako uraditi dispatch control?26.10.2008. u 12:06 - pre 188 meseci
Dispatch-ovanje,koliko sam ga ja razumeo,je da se edit OnExit dogasdjaju prosledi sta je korisnik uradio,da li je kliknuo na jedno od dva dugmeta,ili je prebacio fokus na sledeci edit,ali da se napravi objekat klase TDBEdit i da se za njega 'prikopca'dogadjaj on exit,tim dogadjajem da se ispita i prethodne akcije koje sam napisao u kodu i sta je korisnik uradio..valjda sam malko jasniji...veruj mi da mi glava puca,a namam pojma sta treba da radim...?
Don't worry be happy
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Kako uraditi dispatch control?26.10.2008. u 14:24 - pre 188 meseci
To meni ništa ne znači, dao sam ti predlog kako možeš rešiti problem, na tebi je da odlučiš kako ćeš uraditi.
 
Odgovor na temu

mr.zhile
Ivan ZHILE
C# developer

Član broj: 185721
Poruke: 249
77.46.191.*



+2 Profil

icon Re: Kako uraditi dispatch control?26.10.2008. u 21:05 - pre 188 meseci
@savkic
Hvala na predlogu..

Znam sta treba,ali ne znam kako treba...
Neznam kako bi treba da izgleda kod kojim bi se dispatch-ovala kontrola?
Mislim da bi u tom kodu trebalo obraditi neku od Windowsovih poruka...jer sam video da DbEdit ima proceduru dispatch,ali samo kakoooooooooooo?

Don't worry be happy
 
Odgovor na temu

priki

Član broj: 24732
Poruke: 700
*.dial-up.dsl.siol.net.

ICQ: 174153511


+26 Profil

icon Re: Kako uraditi dispatch control?26.10.2008. u 21:16 - pre 188 meseci
zašto bi obradjivao kontrolu, imaš i drugi metod tj način

pre pritiska na OK dugnme,
uradi proveru svih kontrola,
i ako neka kontrola ne ispunjava uslov, fokusiraj se na nju i
uradi exit iz te procedure, malo brute force-a

najbolje OnBeforePost dataset-a

i tako će korisnik morati uneti sve obavezne kontrole
 
Odgovor na temu

mr.zhile
Ivan ZHILE
C# developer

Član broj: 185721
Poruke: 249
77.46.191.*



+2 Profil

icon Re: Kako uraditi dispatch control?26.10.2008. u 22:43 - pre 188 meseci

Kako uraditi proveru svih kontrola,jednom provedurom...?koliko kapiram ta procerura bi trebala da zameni sve OnExit dogadjaje ?
Cini mi se OK,ali mi deluje malo zbunjujuce jel moze nekii primercic?

Don't worry be happy
 
Odgovor na temu

priki

Član broj: 24732
Poruke: 700
*.datalab.si.

ICQ: 174153511


+26 Profil

icon Re: Kako uraditi dispatch control?27.10.2008. u 13:09 - pre 188 meseci
Code:

procedure TDM_Module.tbRadnaMestaBeforePost(DataSet: TDataSet);
begin
  if DataSet.FieldByName('acName').asString = '' then begin
    MessageDlg('Unos imena obavezan', mtWarning, [mbOK], 0);
    dbEdit1.SetFocus;
    Abort;
  end;
  .
  ..
  ...
end;


i tako redom za potrebna polja
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
93.86.89.*



+62 Profil

icon Re: Kako uraditi dispatch control?27.10.2008. u 14:07 - pre 188 meseci
Pa ako sve kontrole koje te zanimaju imaju OnExit (isti prototip), ti mozes jedan te isti OnExit dodeliti svima njima.

Kako ces znati koja je kontrola u pitanju, kad jednom udjes u event OnExit? Veoma prosto, koristi parametar Sender. Nesto ovako

Code:

if Sender = DBEdit2 then // poredjenje referenci/pointera; ovako ja radim
  ...


ili ovako

Code:

if TComponent(Sender).Name = 'DBEdit2' then // lepo ga pitamo za ime; sve na formi je TComponent, tako da i ovo moze
  ...


Istina je da bi ovo bio povelik handler zbog posebno napisanog koda za svaku kontrolu, ali bi radio posao. Ili ti ipak treba nesto drugo...?

Rajko
 
Odgovor na temu

mr.zhile
Ivan ZHILE
C# developer

Član broj: 185721
Poruke: 249
79.101.73.*



+2 Profil

icon Re: Kako uraditi dispatch control?27.10.2008. u 14:30 - pre 188 meseci
@rajko
Upravo to sto si napiso,samo jos malo pojasni,na mom primeru please?

Don't worry be happy
 
Odgovor na temu

priki

Član broj: 24732
Poruke: 700
*.datalab.si.

ICQ: 174153511


+26 Profil

icon Re: Kako uraditi dispatch control?28.10.2008. u 09:48 - pre 188 meseci
Citat:
Rapaic Rajko
Istina je da bi ovo bio povelik handler zbog posebno napisanog koda za svaku kontrolu, ali bi radio posao. Ili ti ipak treba nesto drugo...?
Rajko


i prekomplikovan da bi poslovnu logiku provere unosa sa svih kontrola strpao u jedan handler
tj sve prilagodio prema njemu. Volim i ja univerzalna rešenja najviše,
samo ponekad nisu moguća ako ih ne isprojektuješ na početku aplikacije
 
Odgovor na temu

mr.zhile
Ivan ZHILE
C# developer

Član broj: 185721
Poruke: 249
91.150.102.*



+2 Profil

icon Re: Kako uraditi dispatch control?28.10.2008. u 11:42 - pre 188 meseci
Hvala na pomoci!!!
Posluzio sam se pikijevim primerom i uradio sam na DataSet-u BeforPost,a na drugoj tabeli sam uradio OnValidation Field,cisto da bih probao kako i to izgleda...!!!
Jos jednom hvala svima,i zamolio bih Vas da mi pojasnite to

Citat:
Volim i ja univerzalna rešenja najviše, samo ponekad nisu moguća ako ih ne isprojektuješ na početku aplikacije


Kako se projektuje automatsko resenje?Odnosno kako bi izgledalo na mom primeru,cisto da bi nesto novo naucio,a ovu aplikaciju sam dotegao pa ad radi kao podmazaana?

HVLA SVIMA na savetima puno mi znace!!!
Don't worry be happy
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
91.150.97.*



+62 Profil

icon Re: Kako uraditi dispatch control?28.10.2008. u 11:44 - pre 188 meseci
Hm, sad meni nije jasno sta te buni...? Mozda kako da pozoves SetFocus date kontrole?

Mozda ovako:

Code:

procedure TForm1.DBEditExit(Sender: TObject);
var
  CurDBEdit: TDBEdit;
begin
  if Sender is TDBEdit then begin
    CurDBEdit := TDBEdit(Sender);

    if CurDBEdit = DBEdit1 then
    begin
      if neka_provera_unosa then
        CurDBEdit.SetFocus
      else
        DBEdit2.SetFocus; // ili koja vec kontrola ide
    end;

    if CurDBEdit = DBEdit2 then
    begin
      if neka_provera_unosa then
        CurDBEdit.SetFocus;
      else
        DBEdit3.SetFocus; // ili koja vec kontrola ide
    end;

    // etc.
  end;
end;


Obrati paznju da u gornjem primeru mozes neka_provera_unosa pozvati i bez provere KOJI je edit u pitanju (naravno ako je slican uslov za unos, recimo neprazan edit itd.), pa tek kad se ustanovi da nije dobar unos, onda proveravati koja je sledeca kontrola za focus i postavljati isti.
Ne znam sta bi ti jos pomoglo, a nisam siguran da je ovo ono sto trazis...?

Rajko
 
Odgovor na temu

priki

Član broj: 24732
Poruke: 700
*.datalab.si.

ICQ: 174153511


+26 Profil

icon Re: Kako uraditi dispatch control?28.10.2008. u 12:20 - pre 188 meseci
Citat:
mr.zhile: Hvala na pomoci!!!
Posluzio sam se pikijevim primerom i uradio sam na DataSet-u BeforPost
Kako se projektuje automatsko resenje?Odnosno kako bi izgledalo na mom primeru,cisto da bi nesto novo naucio,a ovu aplikaciju sam dotegao pa ad radi kao podmazaana?


nije piki nego priki

pričamo o univerzalnim rešenjima, automatska ne postoje
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Kako uraditi dispatch control?

[ Pregleda: 2155 | Odgovora: 18 ] > FB > Twit

Postavi temu Odgovori

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