[DELPHI] Problemy z odwolaniem sie do obiektow

0

Witam!

Mam bardzo nietypowy problem, z ktorym borykam sie juz od dluzszego czasu. Mianowicie w projekcie, gdzie jest 14 unitow z formatkami, nie moge odwolac sie do komponentow, procedur i funkcji glownej formatki (akurat form1 i unit1 ;-P)! Jedynymi sposobami, na uzycie tych obiektow sa: albo bezposrednie odwolanie sie do nich np.:

Memo1.Lines.Add('bla bla bla');

, albo przez wyszukiwanie, np.: TMemo(Form1.FindComponent('Memo1')).Lines.Add('bla bla bla');

Wczesniej jakos nie zwrocilem na to uwagi bo dobieralem sie do nich bezposrednio, ale gdy zaistniala potrzeba odwolania sie z innego unitu, to juz byl klops  :/ . Po wpisaniu Form1. i poczekaniu na wyswietlenie sie listy wszystkich obiektow, pojawialy sie tylko te, ktore dotyczyly klasy TForm.
Teraz mam jeszcze wiekszy problem, poniewaz uzyc procedur i fukcji z glownego unitu, a nie moge wyszukac ich tak jak to jest w przypadku komponentow...
Probowalem grzebac w unit1.dfm, usuwalem znaki diakrytyczne, ale nic to nie dalo  ;-(. Prosze Was o pomoc, bo moze ktos juz mial podobny problem...

Kompilator to Delphi 7 Ent, ale probowalem rowniez pod Delphi 6 i bylo to samo.

Pozdrawiam 

P.S. w unit1 wpisujac form1. takze wyswietla mi sie lista obiektow "czystej" klasy TForm
0
Form1.Memo1.Lines.Add('');

Jeśli to nie działa to znaczy, że gdzieś wcześniej popełniłeś błąd.

0

a do uses dodałeś?

unit Form2;

uses Form1;
0
Oleksy_Adam napisał(a)

a do uses dodałeś?

unit Form2;

uses Form1;

Jak już to

uses Unit

1 :)
ale przecież Delphi samo aktualizuje tę sekcję.

0
djmentos napisał(a)
Form1.Memo1.Lines.Add('');

Jeśli to nie działa to znaczy, że gdzieś wcześniej popełniłeś błąd.

tylko gdzie i jakiego typu?! [???]
Bez odwolywania sie do obiektow przez Form1 (np. Form1.Memo1.blabla) program sie normalnie kompiluje i dziala prawidolowo

Oleksy_Adam napisał(a)

a do uses dodałeś?

unit Form2;

uses Form1;

Oczywiscie, ze dodalem. Jak napisalem wyzej, nie moge sie odwolac nawet w unit1 do komponentow na form1 stosujac form1.nazwa_komp [!!!]

0
  1. domyślnie to nazwy plików to unit1, unit2 i to te nazwy powinny być w usesach chyba.

  2. jeśli jednak zapisałeś jako form1.pas, to znaczy, że Name formy zmieniłeś na jakąś inną, inaczej Delphi nie zezwoliłoby na zapis. Więc jeśli w pliku form1.pas masz okno o nazwie MojaForma, to dajesz:

uses form1;

a później:

MojaForma.EditCzyCoTamInnego
0

Nie zmienialem zadniej z nazw, a tym bardziej nazw plikow. Glowna formatka nazywa sie Form1 i jest opisana w Unit1.dfm, natomiast unit od tej formy nazywa sie Unit1 i jest w Unit1.pas

0

nie moge sie odwolac nawet w unit1 do komponentow na form1 stosujac form1.nazwa_komp

jedyna możliwość takiej sytuacji: form1 wcale się nazywa form1. innej nie ma. sprawdź więc to, dokładnie.

a swoją drogą, to opisana sytuacja:

Form1.FindComponent('Memo1')  // wg ciebie działa
Form1.Memo1 // wg ciebie nie działa

jest praktycznie niemożliwa. więc albo uporządkuj kod (jeeezu, 14 formatek masz, i nawet nazw ci się nie chciało zmieniać? już sobie wyobrażam estetykę tego kodu!) albo podaj źródło unit1 - może nikt nie umrze na widok kodu. tutaj ludzie są twardzi.

0

Przed chwila udalo mi sie rozwiazac problem... hymmm... az wstyd ze to byla taka blachostka [wstyd];
zamiast

var
Form1: TForm1;

bylo:

var
Form1: TForm;

Ze tez nie wpadlem na to miesiac temu... :-/

Dzieki za poswiecony czas, pozdrawiam [browar]

0

nie moze byc uses form1; tylko uses unit1; naucz sie o wspoldzieleniu kodu z innymi unitami

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