Zmiana właściwości komponentu przez inny komponent

2011-10-09 14:52
0

Witajcie,

Chciałbym zbudować prosty program który będzie opierał się na wyborze elementów z komponentu ComboBox, chciałbym aby po wyborze danego elementu z listy przycisk pod otworzył daną wybraną formę. (Itemy, formy, przycisk już mam) Chodzi mi o skojarzenie obu elementów.

procedure TFormaGlowna.ComboBox1Change(Sender: TObject);
begin
 if ComboBox1.Items.Strings[ComboBox1.ItemIndex] = 'Warszawa' then

  //{Przycisk 'Więcej informacji' ma otworzyć FormaWarszawa, if... = 'łódź' __ten sam__ przycisk ma otworzyć FormaŁódź itd.}//

end;

Krótki scenariusz:

Mam program który będzie w formie informatora o różnych miastach w Polsce.

W komponencie GroupBox znajduje się lista Polskich miast.

Pod spodem znajduje się przycisk : Więcej informacji

Jak nie wybiorę żadnego miasta przycisk jest nieaktywny.

Po wyborze w GroupBoxie np. Warszawa - przycisk się uaktywnia (Enabled:= True;)

Po kliknięciu ma otworzyć formę w której mam informacje o warszawie.

Po zamknięciu formy z warszawą wybieram z GroupBoxa - Poznań

I po naciśnięciu przycisku Więcej informacji ma mi się wyświetlić forma z informacjami z Poznania ;)

I to tyle. Łatwiej tego już chyba nie opiszę :P Chodzi mi o to jak skonstruować kod który będzie zmieniał wyswietlaną formę po odpowiednim wybraniu elementu

edytowany 4x, ostatnio: madmike, 2011-10-09 16:54
A konkretnie z czym masz problem? Nie wiesz jak otworzyć nową formę czy co? - stfu 2011-10-09 14:57
Wiem jak utworzyć formę, chodzi mi o to jak przycisk 'WiecejInformacjiBtn' ma zmienić swoją właściwość i przenieść mnie do innej formy sam kombinowałem tak ale jest na prawdę początkujący i moja wizja na pewno daleko odbiega od oryginalu: if ComboBox1.Items.Strings[ComboBox1.ItemIndex] = 'Warszawa' then WiecejInformacjiBtn.FormaWarszawa.Showmodal; - bronks 2011-10-09 15:02
Dalej nie rozumiem co chcesz osiągnąć. Jakie masz komponenty na formie i co chcesz zrobić? Najlepiej edytuj swój post i napisz krótki scenariusz w kilku krokach. - stfu 2011-10-09 15:54

Pozostało 580 znaków

2011-10-09 16:49
0

ok, wybrnąłem sam, może na około ale działa:P
kluczem do sukcesu były fukncje nie w ComboBoxie tylko w tym przycisku "więcej informacji"

procedure TFormaGlowna.WiecejClick(Sender: TObject);
begin
  if ComboBox1.Items.Strings[ComboBox1.ItemIndex] = 'Warszawa' then FormaWarszawa.ShowModal;
  if ComboBox1.Items.Strings[ComboBox1.ItemIndex] = 'Poznań' then FormaPoznan.ShowModal;
  if ComboBox1.Items.Strings[ComboBox1.ItemIndex] = 'Krakow' then FormaKrakow.ShowModal;
end;

Pozostało 580 znaków

2011-10-09 20:54
0

Do takich celów to lepiej użyć zbudowany plik XML wkompilowany w zasoby. W takim pliku można umieścić nie tylko gołe informacje, ale i na przykład ID zdjęcia miasta w zasobach i inne. Bo najzgrabniej stworzyć taki program w postaci pojedynczego pliku exe, który po UPXnięciu powinien być mniejszy i w miarę wygodny w użyciu. Przeanalizuj kod dołaczony do tego posta. U mnie dane prezentuje ListBox, ale nie problem to przecież przerobić na ComboBox czy coś innego. W ogóle do takich kombinacji powinno się użyć albo bazy danych albo właśnie takiej bazy plikowej, najprościej na początek będzie użyć XML. Mój program korzysta z prostego parsera autorstwa Spooka. Poza tym złym pomysłem jest tworzenie 1000 form dla miast. Lepiej zrobić jedną, która będzie zawierała miejsce na przykład na opis miasta czy dane o ludności albo inne możliwe od znalezienia na Wikipedii, miejsce na zdjęcia w TImage i tym podobne. Tak właśnie polecał bym to rozwiązać, bo 1000 if'ów to według mnie jakieś nieporozumienie ;/


Pozostało 580 znaków

Liczba odpowiedzi na stronę

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