menu i formy

0

Witam

Jestem poczatkujacym - wiec prosze o łagodne potraktowanie.

jest sobe aplikacja z menu (jak to w standardowych aplikacjach bywa)
I teraz chce zaprojektowac rozne widoki form
i teraz po wybraniu opcja "1" z menu - ma mi sie pokazac grid z 2 przyciskami
a po wyborze "2" z menu maja mi sie pokazac 3 edity.
I teraz moje pytanie
Czy nalezy stworzyc 2 formy z odpowiednimi komponentami i skopiowac menu do kazdego z nich?
Czy istnieje jakas mozliwosc aby po wyborze opcji z menu zawsze zawartosc formatki byla pokazaywana zawsze w tym samym oknie - powiedzmy projektuje sobie takjakby widoki?

0

Można to zrobić na jednej formie, ale zapoznaj sie z takim czymś jak Visible:=False; albo Visible:=True; np. Edit1.Visible:=True;

Visible:=True; <---pokazuje komponent

Visible:=False; <---robi komponent jako niewidoczny

Właściwość Visible masz na dole w zakładce Properties.

0

Hmm ale widzsz chodzi mi o cos takiego,ze masz główna forme z menu nagorze i teraz w zaleznosci o to co klikne w menu to wyswietla mi sie forma pod menu - czyli takjakby forma w formie.

0

Coż ja bym proponował jeszcze inne rozwiązanie, neico bardziej elastyczne. W formie tworzysz liste:TList. Następnie piszesz procedurę tworzącą i wyświetlającą przycisk i umeiszczającą pointer do neigo na liście, a następnie podłączasz ją do górnego menu i jak klikniesz 2 to wywołujesz tworzenei przycisku 2 razy, jak 3 trzy razy - masz pełną dowolnośc co zrobisz kliknięciu górnego menu i nie musisz robić iluś tam form, ani ukrywać dodatkowych buttonów (bo jak już zaplanujesz że ma być maksymalnie 5 a ktoś powie a ja chcę 10? Zamiast doklepywać kod zwiększasz w 1 miejscu licznik z 5 na 10 i chodzi ). Przy zmianie "formy" z menu z 2 na 3 trzeba pamiętać by zwolnić pamięć (skasować) istniejące przyciski i stworzyć nowe lub można dodać/skasować brakujące/nadmiarowe przyciski

0

Proponuję ci zajrzeć tutaj: http://4programmers.net/Forum/71504?h=Panel#71504
Z tym że trzeba tam trochę pokombinować z nową formą, aby dobrze się wyświetlała.

Nic nie jest za darmo ;) Trzeba też trochę pokombinować...

0

daban napisał:

Coż ja bym proponował jeszcze inne rozwiązanie, neico bardziej elastyczne. W formie tworzysz liste:TList. Następnie piszesz procedurę tworzącą i wyświetlającą przycisk i umeiszczającą pointer do neigo na liście, a następnie podłączasz ją do górnego menu i jak klikniesz 2 to wywołujesz tworzenei przycisku 2 razy, jak 3 trzy razy - masz pełną dowolnośc co zrobisz kliknięciu górnego menu i ort! musisz robić iluś tam form, ani ukrywać dodatkowych buttonów (bo jak już zaplanujesz że ma być maksymalnie 5 a ktoś powie a ja chcę 10? Zamiast doklepywać kod zwiększasz w 1 miejscu licznik z 5 na 10 i chodzi ). Przy zmianie "formy" z menu z 2 na 3 trzeba pamiętać by zwolnić pamięć (skasować) istniejące przyciski i stworzyć nowe lub można dodać/skasować brakujące/nadmiarowe przyciski

danek napisał:

Jestem poczatkujacym - wiec prosze o łagodne potraktowanie.

On dopiero zaczyna przygodę w Delphi, dajcie mu się nauczyć od takiego sposobu jak mu napisałem :)

0

heh chyba zostałem źle zrozumiany

mam głowny form z menu na samej górze, w srodku tego głównego formu chce miec mozliwosc wyswielania innych formow w zaleznosci od tego jaka opcja z menu jest kliknieta. Tak jak to bywa w wiekszosci aplikacjiach. Czyli w menu edycja - mam mozliwosc wyszukiwania, wpisywania.
Klikam edycja = ponizej otweira mi se form wczesniej zaprojektowany do Edycji
Klikam wyszukiwanie = ponizej pojawia sie form do zaawansowanego wyszukiwania.

0

chłopaki, chłopaki danek chce zrobić zwykła aplikację MDI, bez żadnych sztuczków i kruczków

tworzysz 3 formy

  1. FormStyle := fsMDIForm i na niej dajesz Menu
  2. FormStyle := fsMdiChild i na niej te edity
  3. FormStyle := fsMdiChild i na niej grid

naciskasz SHIFT + CTRL + F11, zakładka forms i robisz tak, że po lewej masz TYLKO form1 a po prawej form2 i form3.

Do uses Unit1 dodajesz unit2 i unit3

W OnClose form2 (form3 tak samo) wpisujesz Action := caFree;

a w menu1Click dajesz tak

procedure menu1click()
var
  f: TForm2;
begin
  f := TForm2.Create(Application);
  f.Show;
end;

w onclick menu 2 tak samo tylko TForm2

=========================
EDIT: albo nie MDI, już sam nie wiem tylko ze zwykłymi formami modalnymi. Poniżej przepis na modalne:

robisz prawie tak jak wyżej

tworzysz 3 formy

naciskasz SHIFT + CTRL + F11, zakładka forms i robisz tak, że po lewej masz TYLKO form1 a po prawej form2 i form3.

Do uses Unit1 dodajesz unit2 i unit3

a w menu1Click dajesz tak

procedure menu1click()
var
  f: TForm2;
begin
  f := TForm2.Create(Application);
  try
    f.ShowModal;
    // tu możesz odczytać coś z tej formy, np
    // ZmiennaString := f.Edit1.Text;
  finally
    FreeAndNil(f);
  end;
end;
0

Dziki i o to własnie mi chodziło.

pozdrawiam

0

OK.
A mam pytanko - jak zamykac poszczególne formy??
tzn
menu 1 - 1.1 1.2 2 - 2.1 2.2 itd
i powiedzmy klikam na pozycje 1.1 i otwiera mi sie form 1.1 a zamyka wczesniej otwarty form (np 1.2 - jezeli wczesniej byłt 1.2 otwarty)
Bo robiac to standardowo to za kazdym razem no. po kliknieciu z menu 1.1 2 razy to beda otwieraly mi sie kolejne formy 1.1.
pozdraiwma

1 użytkowników online, w tym zalogowanych: 0, gości: 1