Zapis metod w osobnym pliku

0

Witam

Pracuję nad projektem i mam taki problem, że program jest na tyle rozbudowany, że sam się w nim gubię. Stosuję Procedury i funkcje. Mimo to chciałbym jeszcze bardziej uporządkować kod. Czy istnieje jekiś sposób, aby procedury które wykonują operacje na komponentach ( np. wyswietlaja dane w Edit1) zapisać gdzieś w osobnym pliku i podać tak w programie : {$R SMetody.pas}. Czy mam zająć się klasami? ( probowałem ale nie udalo mi się zrobić takiej, żeby wynik wyświetliła w komponencie, jedynie do zmiennej.

Można zrobić jakieś grupy procedur czy coś w tym stylu w jednym unicie?

1

Czy istnieje jekiś sposób, aby procedury które wykonują operacje na komponentach ( np. wyswietlaja dane w Edit1) zapisać gdzieś w osobnym pliku i podać tak w programie

Ponieważ jesteśmy w dziale newbie: nie da się.

Czy mam zająć się klasami?

Tak

Można zrobić jakieś grupy procedur czy coś w tym stylu w jednym unicie?

Klasy?

0

klasy znacznie upraszczają kod

0

Czyli klasy :/

A jak ją zrobić prawidłowo. Czytałem książkę, 4p i nadal nie wiem.
Rozumiem, że jak zrobię nową klasę która będzie dziedziczyc z Form1, to będę mógł operować na komponentach? tzn wszystkie komponenty bedę miał dostępne i w uses nie będę musiał nic wpisywać ?

Mam problem z zapisem klasy w osobnym pliku pas. Normlanie w jednym unicie piszę po type wszystkei klasy i jest git. Gorzej jak chcę klasę która jest w osobnym pliku wczytać za pomocą uses. Wtedy nic nie działa, albo działa nie tak jak chcę.

0

nie ma metody na zrobienie prawidłowej klasy. klasa powinna robić coś konkretnego np. rozszerzać działanie komponentu.

0
unit Metody;


interface


   uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons, unit2, unit3, Vcl.Menus, Vcl.ExtCtrls;

type
  TFormN = class(Form2)
   procedure nie2;
// tutaj Constructor??
  private
    { Private declarations }
  public


  end;

implementation


procedure TFormn.nie2;
  begin
if koniec = 1 then showmessage('nie wczytano')
else
begin

 Form3.Memo1.Lines.Add(Tabbufor[4, wylosowana]);

 Label2.Caption := Tabbufor[1, wylosowana];
 BitBtn1.Enabled := False;
 BitBtn3.Enabled := False;
end;

  end;


end.

takie cos zrobilem. Moj zamiar był taki aby moc operowac na komponentach z unitow 2 i 3 (dodalem je do uses). Klasa dziedziczy z Form2 ?? (dobrze to zapisałem?)
TFormN = Nowa klasa.

I teraz odwołuję sie do niej w unicie2:

procedure TForm2.procedura11;
var
sss : TFormN;

begin

   sss := TFormn.Create;
   sss.nie2;

end;

Czy to o to chodzi? Musi być Create, czy starczyło by samo Formn.nie2; ??

0

Moj zamiar był taki aby moc operowac na komponentach z unitow 2 i 3 (dodalem je do uses).

Dodaj je do uses ale w sekcji implementacji.

Klasa dziedziczy z Form2 ?? (dobrze to zapisałem?)

Tylko czemu ona dziedziczy?! Jeżeli chcesz mieć dostęp do Formy 2, to w Create pobierasz sobie referencję do niej (constructor Create(form2_ref:TForm2);) a potem odwołujesz się po zapisaniu do zmiennej w klasie.

Nie wytłumaczyłeś co za klasę chcesz zrobić, może ogarnij temat klas, dowiedz się co chcesz zrobić (klasa musi mieć jakieś przeznaczenie) a potem przejdź do kodowania. Bo póki co to ty nie robisz zwykłej klasy tylko formę.

Czy to o to chodzi? Musi być Create, czy starczyło by samo Formn.nie2; ??

W tutorialu nie mówili czy po prostu nie czytałeś? Przeczytaj tak czy siak...

0

A teraz nie ma przeznaczenia? Ma w sobie procedure nie2. Głównym celem było schowanie jej gdzieś w osobnym pliku. Odwołuję się do niej kilka razy w programie i nie chce jej bezprzerwy przewijać. Rozumiem, że klasa jest w nieco innym celu, ale ja mam taki błachy. :)

btw. Czy do jednej formy mogą należeć 2 pliki pas? Może by tą drogą pójśc a nie w stronę klas... klasy to procedury a ja chce tylko troche kodu ukryc

1

Jeżeli chesz dołączyć zawartośc innego pliku w aktualnym to robisz to dyrektywą kompilatora {$I nazwa_plliku.ext} jednak warunek aby to się skompilowało, jest taki że dołączony plik ma odpowiedni kod dla miejsca, w którym został wstawiony. Czyli musi mieć on prawidłową zawartość tak jakby jego treść była żywcem wklejona w danym miejscu pozostałego kodu.

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