Vytvoření prohlížeče, vytvoření editačního dialogu |
Top Previous Next |
Seznam témat:
Vytvoření modálního prohlížeče Skript vytvoří jednoduchý modální (nelze současně pracovat jinde) prohlížeč nad tabulkou dba.gkurzy, včetně editačního dialogu. Před otevřením se zeptá na datum, které je zohledněno v SQL pro browser.
//procedura pro vytvoření editačního dialogu procedure WantDialog(Sender: TCustomBrowser; Command: integer; Form: TFormBrowserGrid; var Dlg: TFormBrowserDlg); var NEdit: TBrowserNumEdit; DEdit: TBrowserDateEdit; LEdit: TBrowserLookupEdit; Lbl: TLabelPlus; Btn: TButton; CurrEdit: TBrowserCurrEdit; begin Dlg := TFormBrowserDlg.CreateForBrowser(Sender, Form); Dlg.Height := 280;
Btn := TButton(Dlg.FindComponent('BtnOk')); Btn.Top := 220;
Btn := TButton(Dlg.FindComponent('BtnCancel')); Btn.Top := 220;
//Měna LEdit := TBrowserLookupEdit.Create(Dlg); LEdit.Left := 20; LEdit.Top := 30; LEdit.Width := 100; LEdit.FieldName := 'mena_id'; LEdit.Parent := Dlg; LEdit.LookupDatabase := DefaultDatabaseName; LEdit.LookupSQL.Text := 'select m.id_mena, s.nazev, s.cleneu from dba.gmeny as m, dba.gstaty as s where s.id_stat = m.stat_id order by 1'; LEdit.LookupField := 'id_mena'; LEdit.TabOrder := 0; LEdit.AllowNull := False;
Lbl := TLabelPlus.Create(Dlg); Lbl.Caption := 'Měna'; Lbl.Parent := Dlg; Lbl.FocusControl := LEdit; Lbl.Attached := True;
//Platnost od DEdit := TBrowserDateEdit.Create(Dlg); DEdit.Left := 20; DEdit.Top := 80; DEdit.Width := 100; DEdit.FieldName := 'dne'; DEdit.Parent := Dlg; DEdit.TabOrder := 1; DEdit.AllowNull := False;
Lbl := TLabelPlus.Create(Dlg); Lbl.Caption := 'Platnost od'; Lbl.Parent := Dlg; Lbl.FocusControl := DEdit; Lbl.Attached := True;
//Stát LEdit := TBrowserLookupEdit.Create(Dlg); LEdit.Left := 20; LEdit.Top := 130; LEdit.Width := 100; LEdit.FieldName := 'stat'; LEdit.Parent := Dlg; LEdit.LookupDatabase := DefaultDatabaseName; LEdit.LookupSQL.Text := 'select id_stat, nazev, cleneu from dba.gstaty order by 1'; LEdit.LookupField := 'id_stat'; LEdit.TabOrder := 2; LEdit.AllowNull := False;
Lbl := TLabelPlus.Create(Dlg); Lbl.Caption := 'Stát'; Lbl.Parent := Dlg; Lbl.FocusControl := LEdit; Lbl.Attached := True;
//Činitel NEdit := TBrowserNumEdit.Create(Dlg); NEdit.Left := 20; NEdit.Top := 180; NEdit.Width := 40; NEdit.FieldName := 'cinitel'; NEdit.Parent := Dlg; NEdit.DataType := ntInteger; NEdit.ButtonVisible := False; NEdit.TabOrder := 3; NEdit.AllowNull := False;
Lbl := TLabelPlus.Create(Dlg); Lbl.Caption := 'Činitel'; Lbl.Parent := Dlg; Lbl.FocusControl := NEdit; Lbl.Attached := True;
//Kurz NEdit := TBrowserNumEdit.Create(Dlg); NEdit.Left := 65; NEdit.Top := 180; NEdit.Width := 55; NEdit.FieldName := 'koef'; NEdit.Parent := Dlg; NEdit.DataType := ntFloat; NEdit.ButtonVisible := False; NEdit.TabOrder := 4; NEdit.AllowNull := False;
Lbl := TLabelPlus.Create(Dlg); Lbl.Caption := 'Kurz'; Lbl.Parent := Dlg; Lbl.FocusControl := NEdit; Lbl.Attached := True;
//Domácí měna LEdit := TBrowserLookupEdit.Create(Dlg); LEdit.Left := 150; LEdit.Top := 30; LEdit.Width := 100; LEdit.FieldName := 'menad'; LEdit.Parent := Dlg; LEdit.LookupDatabase := DefaultDatabaseName; LEdit.LookupSQL.Text := 'select m.id_mena, s.nazev, s.cleneu from dba.gmeny as m, dba.gstaty as s where s.id_stat = m.stat_id order by 1'; LEdit.LookupField := 'id_mena'; LEdit.TabOrder := 5; LEdit.AllowNull := False;
Lbl := TLabelPlus.Create(Dlg); Lbl.Caption := 'Domácí měna'; Lbl.Parent := Dlg; Lbl.FocusControl := LEdit; Lbl.Attached := True; end;
//vlastní skript var Br: TBrowser; DatumOd: TDateTime; begin //předvyplň dnešní datum DatumOd := Date;
//zeptej se na datum if not DateBox('Zadejte datum platnosti', DatumOd) then Exit;
//vytvoř a otevři browser Br := TBrowser.Create(nil); try Br.Name := 'BrKurzyCustom'; Br.Caption := 'Číselník kurzů ke dni '+DateToStr(DatumOd); Br.PrimaryKeys.Add('mena_id'); Br.PrimaryKeys.Add('dne'); Br.PrimaryKeys.Add('stat'); Br.SQL.Add('select * from dba.gkurzy where dne >= :datum'); Br.Params[0].AsDateTime := DatumOd; Br.TableName := 'dba.gkurzy'; Br.OnWantDialogInstance := @WantDialog; Br.ShowModal; finally Br.Free; end; end.
Nemodální prohlížeč Skript vytvoří jednoduchý nemodální (lze současně pracovat i jinde) prohlížeč nad tabulkou dba.gstaty. Bez editačního dialogu. Pro tip jak vytvořit a připojit editační dialog viz "Modální prohlížeč". var Br: TBrowser; begin Br := TBrowser.Create(nil); try Br.Name := 'BrStatyCustom'; Br.Caption := 'Číselník států'; Br.PrimaryKeys.Add('id_stat'); Br.SQL.Add('select * from dba.gstaty'); Br.TableName := 'dba.gstaty'; Br.FreeOnClose := True; //uvolní Br z paměti po zavření Br.Show; except Br.Free; //nastane jen v případě chyby v kódu výše end; end.
Prohlížeč typu master - details Skript vytvoří jednoduchý modální (nelze současně pracovat jinde) prohlížeč nad tabulkou dba.omater, včetně editačního dialogu. Dialog obsahuje další (detailní) prohlížeč nad závislou tabulkou (dba.omckody), včetně editačního dialogu.
{ ************************************************************* procedura pro vytvoření editačního dialogu hlavičky ************************************************************* } procedure MakeDialogHdr(Sender: TCustomBrowser; Command: integer; Form: TFormBrowserGrid; var Dlg: TFormBrowserDlg); var EditID,EditNazev: TBrowserEdit; RadiosDPH: TBrowserRadios; Lbl: TLabelPlus; Btn: TButton; BrDetail: TBrowserDetail; Grid: TDBGridPlus; BtnIns,BtnDel,BtnUpd: TBrowserButton; begin //vytvoř dialog Dlg := TFormBrowserDlg.CreateForBrowser(Sender, Form); Dlg.Width := 700; Dlg.Height := 400;
//umísti buttony OK a Storno (už jsou vytvořeny) Btn := TButton(Dlg.FindComponent('BtnOk')); Btn.Left := 527; Btn.Top := 340;
Btn := TButton(Dlg.FindComponent('BtnCancel')); Btn.Left := 610; Btn.Top := 340;
//pole pro kód EditID := TBrowserEdit.Create(Dlg); EditID.Left := 20; EditID.Top := 30; EditID.Width := 160; EditID.FieldName := 'id_material'; EditID.Parent := Dlg; EditID.TabOrder := 0; EditID.AllowNull := False;
Lbl := TLabelPlus.Create(Dlg); Lbl.Caption := 'Kód'; Lbl.Parent := Dlg; Lbl.FocusControl := EditID; Lbl.Attached := True;
//pole pro název EditNazev := TBrowserEdit.Create(Dlg); EditNazev.Left := 200; EditNazev.Top := 30; EditNazev.Width := 200; EditNazev.FieldName := 'nazev'; EditNazev.Parent := Dlg; EditNazev.TabOrder := 1; EditNazev.AllowNull := False;
Lbl := TLabelPlus.Create(Dlg); Lbl.Caption := 'Název'; Lbl.Parent := Dlg; Lbl.FocusControl := EditNazev; Lbl.Attached := True;
//pole pro DPH RadiosDPH := TBrowserRadios.Create(Dlg); RadiosDPH.Caption := 'DPH'; RadiosDPH.Left := 420; RadiosDPH.Top := 20; RadiosDPH.Height := 70; RadiosDPH.FieldName := 'dph'; RadiosDPH.Parent := Dlg; RadiosDPH.TabOrder := 2; RadiosDPH.Items.Add('0%'); RadiosDPH.Items.Add('snížená sazba'); RadiosDPH.Items.Add('základní sazba');
//displej pro browser-detail Grid := TDBGridPlus.Create(Dlg); Grid.Left := 20; Grid.Top := 100; Grid.Width := 660; Grid.Height := 200; Grid.Parent := Dlg; Grid.TabOrder := 3;
//browser-detail s položkami BrDetail := TBrowserDetail.Create(Dlg); BrDetail.Name := 'BrDetail'; BrDetail.Caption := 'Čárové kódy'; BrDetail.PrimaryKeys.Add('material_id'); BrDetail.PrimaryKeys.Add('id_ean'); BrDetail.SQL.Add('select material_id, id_ean, nazev from dba.omckody'); BrDetail.TableName := 'dba.omckody'; BrDetail.Constraints.Add('material_id=id_material'); BrDetail.DataDisplay := Grid; BrDetail.OnWantDialogInstance := @MakeDialogItm;
BtnIns := TBrowserButton.Create(Dlg); BtnIns.Left := 450; BtnIns.Top := 304; BtnIns.Operation := opInsert; BtnIns.Browser := BrDetail; BtnIns.Parent := Dlg; BtnIns.TabOrder := 4;
BtnDel := TBrowserButton.Create(Dlg); BtnDel.Left := 530; BtnDel.Top := 304; BtnDel.Operation := opDelete; BtnDel.Browser := BrDetail; BtnDel.Parent := Dlg; BtnDel.TabOrder := 5;
BtnUpd := TBrowserButton.Create(Dlg); BtnUpd.Left := 610; BtnUpd.Top := 304; BtnUpd.Operation := opUpdate; BtnUpd.Browser := BrDetail; BtnUpd.Parent := Dlg; BtnUpd.TabOrder := 6; end;
{ ************************************************************* procedura pro vytvoření editačního dialogu položky ************************************************************* } procedure MakeDialogItm(Sender: TCustomBrowser; Command: integer; Form: TFormBrowserGrid; var Dlg: TFormBrowserDlg); var EditNazev,EditEAN: TBrowserEdit; Grabber: TBrowserDataGrabber; Lbl: TLabelPlus; Btn: TButton; begin //vytvoř dialog Dlg := TFormBrowserDlg.CreateForBrowser(Sender, Form); Dlg.Width := 500; Dlg.Height := 200;
//umísti buttony OK a Storno (už jsou vytvořeny) Btn := TButton(Dlg.FindComponent('BtnOk')); Btn.Left := 327; Btn.Top := 140;
Btn := TButton(Dlg.FindComponent('BtnCancel')); Btn.Left := 410; Btn.Top := 140;
//pole pro kód skl. karty (prvek musí být přítomen, protože je to součástí prim. klíče) Grabber := TBrowserDataGrabber.Create(Dlg); Grabber.FieldNames.Add('material_id'); Grabber.Parent := Dlg;
//pole pro EAN EditEAN := TBrowserEdit.Create(Dlg); EditEAN.Left := 20; EditEAN.Top := 30; EditEAN.Width := 100; EditEAN.FieldName := 'id_ean'; EditEAN.Parent := Dlg; EditEAN.TabOrder := 0; EditEAN.AllowNull := False;
Lbl := TLabelPlus.Create(Dlg); Lbl.Caption := 'EAN'; Lbl.Parent := Dlg; Lbl.FocusControl := EditEAN; Lbl.Attached := True;
//pole pro název EditNazev := TBrowserEdit.Create(Dlg); EditNazev.Left := 140; EditNazev.Top := 30; EditNazev.Width := 160; EditNazev.FieldName := 'nazev'; EditNazev.Parent := Dlg; EditNazev.TabOrder := 1; EditNazev.AllowNull := False;
Lbl := TLabelPlus.Create(Dlg); Lbl.Caption := 'Název'; Lbl.Parent := Dlg; Lbl.FocusControl := EditNazev; Lbl.Attached := True; end;
{ *********************************** vlastní skript *********************************** } var Br: TBrowser; begin //vytvoř a otevři browser Br := TBrowser.Create(nil); try Br.Name := 'BrMaster'; Br.Caption := 'Číselník skladových karet'; Br.PrimaryKeys.Add('id_material'); Br.SQL.Add('select id_material,nazev from dba.omater'); Br.TableName := 'dba.omater'; Br.OnWantDialogInstance := @MakeDialogHdr; Br.ShowModal; finally Br.Free; end; end.
Související témata |