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

Pravljenje dynamic menu - ja na formi?

[es] :: Pascal / Delphi / Kylix :: Pravljenje dynamic menu - ja na formi?

[ Pregleda: 3869 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.dialup.neobee.net.



Profil

icon Pravljenje dynamic menu - ja na formi?31.03.2006. u 15:42 - pre 219 meseci
Kao što sam postovao u vezi pravljenja dinamičkih edita na formi, sad mi je interesantno napraviti i dinamičke menije! Naime, napravio sam jednu tabelu u kojoj se nalaze podaci o tabelama, formama, menijima, poljima... Meni, konkretno, treba da napravim dinamički podmeni. Da iz te tabele pozivam podmeni sa kojeg pozivam neku formu. Postavio sam MainMenu, recimo, TABELE, a pod meni bi trebao biti LICA. Pa, OnClick, na LICA otvara formu za pretragu lica. Taj podmeni LICA bi trebao da se kreira dinamički iz tabele i da bude povezan sa formom za pretragu lica... To kreiranje bi trebalo da se odvija na MainForm, sa koje se otvara forma za pretragu LICA.

Da li neko zna nešto o ovome?

pozzzzz....
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.dialup.neobee.net.



Profil

icon Re: Pravljenje dynamic menu - ja na formi?01.04.2006. u 15:58 - pre 219 meseci
Pokušao sam naći nešto o tome na:
http://delphi.about.com/
http://www.torry.net/

ali, bezuspešno, nažalost... Help plss...

Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Pravljenje dynamic menu - ja na formi?01.04.2006. u 17:03 - pre 219 meseci
Evo... da ne bude posle kako niko nece da ti pomogne, a ti pomazes svima. Ne znam da li sam bas razumeo sta ti tacno treba, ali ovaj primer koji sam nabrzaka napisao radi sledece:

1. Otvori tabelu iz baze u kojoj se nalaze 3 polja:
a) Parent: ime menija u kojem treba da se kreira nov meni koji ce otvoriti neku formu
b) Name: ime menija koji se kreira
c) Form: naziv klase forme koja treba da se kreira kada se klikne na meni

2. Kada uzme Parent prodje kroz ceo meni i pretrazi da li taj meni vec postoji... ako ne postoji, kreira se

3. Kreira se nov meni u meniju Parent

4. Ako je navedena klasa forme postavlja se OnClick event

I tako za svaki red u tabeli.
Ovo je prilicno prost primer... ne znam bas da li ce ti posluziti, ali ces bar videti kako mozes dinamicki da kreiras menije pa ce ti mozda pasti na pamet kako da sam uradis ono sto tebi stvarno treba.
Prikačeni fajlovi
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.dialup.neobee.net.



Profil

icon Re: Pravljenje dynamic menu - ja na formi?01.04.2006. u 20:42 - pre 219 meseci
Preleto sam preko primera koji si postavio i mislim da je to ono što mi treba... Kad stignem da ga detaljnije proučim, noćas, javim ti...
Hvala ti puno...
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.neobee.net.



Profil

icon Re: Pravljenje dynamic menu - ja na formi?02.04.2006. u 13:11 - pre 219 meseci
Malo sam uhvatio vremena, pa odradio po tvome primeru... Znači, kod sam integrisao u moj primer i izvršio samo osnovne izmene...
Naime, napravio sam tabelu sa poljima, analogno tvojoj, PARENT, MENI, FORM, uneo Sifrant, Osobe, TPretragaOsobe...
Naravno, postoji forma, PretragaOsobe, kao i OsobePretraga.pas, ali prikaže se greška Class TPretragaOsobe not found???
Dakle, pokrene se program, pojavi se dinamički napravljen meni, parent: Šifrant, ispode njega meni: Osobe, a kad kliknem na meni osobe, prijavi, jel, tu grešku: "Class TPretragaOsobe not found"?!

Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Pravljenje dynamic menu - ja na formi?02.04.2006. u 14:13 - pre 219 meseci
Da li si registrovao tu klasu?

Pogledaj *.dpr fajl... na pocetku registrujem sve forme.
Registraciju klase mozes da uradis bilo kad pre njenog trazenja... mozes recimo u initialization delu unit-a.
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.dialup.neobee.net.



Profil

icon Re: Pravljenje dynamic menu - ja na formi?02.04.2006. u 17:13 - pre 219 meseci
Vidi:
Code:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.Run;
end.


Trebalo bi po ovome da je ok, a?
Ali i dalje: "Class TForm2 not found"!!!
Ovo sam radio baš po tvome...
U tabeli mi je za polje Form vrednost TForm2.

A vidi malo i ovde:

Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, Menus, Unit2;

type
  TForm1 = class(TForm)
    mnuMain: TMainMenu;
    tblMenu: TADOTable;
    procedure FormCreate(Sender: TObject);
    procedure MenuClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
  FormNames: TStringList;
    { Public declarations }
  end;

var
  Form1: TForm1;


implementation

{$R *.dfm}
var
  Form2: TForm2;

function FindMenuItem(Parent: TMenuItem; ACaption: String): TMenuItem;
var
  I: Integer;
begin
  I := 0;
  Result := Parent.Find(ACaption);
  while (Result = nil) and (I < Parent.Count) do
  begin
    Result := FindMenuItem(Parent.Items[I], ACaption);
    Inc(I);
  end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
  M, P: TMenuItem;
  ParentName, MenuName, FormName: String;
begin
  FormNames := TStringList.Create;
  
  while not tblMenu.Eof do
  begin
    ParentName := tblMenu.FieldByName('Parent').AsString;
    MenuName := tblMenu.FieldByName('Meni').AsString;
    FormName := tblMenu.FieldByName('Form').AsString;

    P := FindMenuItem(mnuMain.Items, ParentName);
    if P = nil then
    begin
      P := TMenuItem.Create(mnuMain);
      P.Name := ParentName;
      P.Caption := P.Name;
      mnuMain.Items.Add(P);
    end;

    M := TMenuItem.Create(mnuMain);
    M.Name := MenuName;
    M.Caption := M.Name;
    P.Add(M);
    if FormName <> '' then
    begin
      FormNames.Add(FormName);
      M.Tag := FormNames.Count - 1;
      M.OnClick := MenuClick;
    end;

    tblMenu.Next;
  end;

end;

procedure TForm1.MenuClick(Sender: TObject);
var
  F: TForm;
  C: TComponentClass;
begin
  F := nil;
  try
    C := TComponentClass(FindClass(FormNames[TMenuItem(Sender).Tag]));
    Application.CreateForm(C, F);
    F.ShowModal;
  finally
    if Assigned(F) then
      FreeAndNil(F);
  end;
end;


procedure TForm1.FormDestroy(Sender: TObject);
begin
   if Assigned(FormNames) then
    FreeAndNil(FormNames);
end;

end.


I šta misliš, gde sam pogrešio?!
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Pravljenje dynamic menu - ja na formi?02.04.2006. u 17:23 - pre 219 meseci
Hajde sad lepo pogledaj kod koji sam ja posalo... da li primecujes da kod mene ima RegisterClasses, a kod tebe nema?

Lepo sam ti rekao da mozes da registrujes klase na pocetku programa ili, ako ti je lakse da se snadjes, u initialization delu unit-a u kome si definisao formu. Ako registrujes samo jednu klasu mozes koristiti RegisterClass, a ako registrujes vise klasa onda RegisterClasses.

RegisterClasses jednostavno poziva RegisterClass za svaku klasu u prosledjenom nizu.

P.S.
Slobodno me cimni na nekom messengeru.

[Ovu poruku je menjao Srki_82 dana 02.04.2006. u 18:24 GMT+1]
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.dialup.neobee.net.



Profil

icon Re: Pravljenje dynamic menu - ja na formi?02.04.2006. u 17:40 - pre 219 meseci
Baš sam sad hteo da ti javim da sam skontao, odradio sam:
Code:
program Project1;

uses
  Forms,
  Classes,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

begin
  RegisterClasses([TForm2]);
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

I sad funkcioniše lepo...
Hvala ti puno, još jednom... I biće pitanja na ovu temu još, sigurno....
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.dialup.neobee.net.



Profil

icon Re: Pravljenje dynamic menu - ja na formi?02.04.2006. u 23:26 - pre 219 meseci
Ubacio sam taj primer u neki moj program i sad imam problem. Naime, odradio sam da se na osnovu klika na meni ode na jednu formu. Na toj formi ima dugme sa koje se poziva forma za izmene (edit) podataka. Sa dbgrid-a ili ADOTable treba da se na toj formi, kad isfiltriram lice, za edit odradi:

Code:
eFieldsList[i].Text:=PretragaOsoba.ADOOsoba.FieldByName(FilterList.Strings[i]).AsString;


da se ispune dinačmiki kreirani editi, to i uradi ali ja recimo isfiltriram lice pod ID = 5, a prikazuje se lice pod ID = 1, i što je zanimljivo kad odradim editovanje i snimim izvrši se nad ID = 5?!
Znači, fokusira se na dato lice, ali pokazuje u listi lice pod ID = 1 ?!!!
To nije bilo dok nisam postavio ovo za menije, radilo je kako treba!
Klikom na meni otvara se ta forma, gde se vrši pretraga i kad se isfiltrira klikom na dugme 'Izmene' se otvara forma za izmene.
Da nije to problem?
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.neobee.net.



Profil

icon Re: Pravljenje dynamic menu - ja na formi?06.04.2006. u 14:49 - pre 219 meseci
Kako da u primeru koji si postavio, Srki_82, napravim i ShortCut, dinamicki?
pozz...
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

csdsgn
Serviser
R&A TEAM
Topola

Član broj: 206270
Poruke: 8

Sajt: ria-team.co.rs


Profil

icon Re: Pravljenje dynamic menu - ja na formi?04.05.2009. u 19:20 - pre 182 meseci
Milose bas si dobar u ovome, mene zanima kako ces dodati onclick event neku funkciju ili proceduru a ne formu...
Ako si raspolozen voleo bih da nastavis kod.
Ratko
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Pravljenje dynamic menu - ja na formi?

[ Pregleda: 3869 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

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