Pomoc przy pisaniu programu

Zero Super

Użytkownik
Dołączył
Listopad 24, 2009
Posty
12
Czesc
Jestem poczatkujacy w programowaniu w delphi.
Chce napisac swoj wlasny pierwszy program. (cos latwego na poczatek i cos czego nie znalalem w necie).
Myslalem o czyms takim jak konfiguracja. Wiec po 1 wlaczeniu programu chcialbym aby uruchomila sie dana forma.
Tam podaje info ktore zapisuja sie na innych formach (pierwsza mysl).
Chce jako jedna z funkcji mojego programu aby przy wlaczeniu komputera z traya wylonila sie np forma2(zaleznie od dnia tygodnia) na kilka sekund.
To co do tej pory udalo mi sie wymyslec:
Kod:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,DateUtils, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Label2: TLabel;
    Edit8: TEdit;
    Edit9: TEdit;
    Edit10: TEdit;
    Edit11: TEdit;
    Edit12: TEdit;
    Edit13: TEdit;
    Edit14: TEdit;
    Label3: TLabel;
    Edit15: TEdit;
    Edit16: TEdit;
    Edit17: TEdit;
    Edit18: TEdit;
    Edit19: TEdit;
    Edit20: TEdit;
    Edit21: TEdit;
    Label4: TLabel;
    Edit22: TEdit;
    Edit23: TEdit;
    Edit24: TEdit;
    Edit25: TEdit;
    Edit26: TEdit;
    Edit27: TEdit;
    Edit28: TEdit;
    Label5: TLabel;
    Edit29: TEdit;
    Edit30: TEdit;
    Edit31: TEdit;
    Edit32: TEdit;
    Edit33: TEdit;
    Edit34: TEdit;
    Edit35: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure Edit3Change(Sender: TObject);
    procedure Edit4Change(Sender: TObject);
    procedure Edit5Change(Sender: TObject);
    procedure Edit7Change(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Edit6Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
const
Dzien : array[1..7] of string =
('Nd', 'Pn', 'Wt', 'Śr', 'Czw', 'Pt', 'Sb');
begin
  if Dzien[DayOfWeek(Tomorrow)]= 'Pt' then
  Form2.Showmodal
end;

  procedure TForm1.Edit1Change(Sender: TObject);
  begin
    form2.Label2.Caption := Edit1.Text;
  end;

  procedure TForm1.Edit2Change(Sender: TObject);
  begin
    form2.Label3.Caption := Edit2.Text;
  end;

  procedure TForm1.Edit3Change(Sender: TObject);
  begin
    form2.Label4.Caption := Edit3.Text;
  end;

  procedure TForm1.Edit4Change(Sender: TObject);
  begin
    form2.Label5.Caption := Edit4.Text;
  end;


  procedure TForm1.Edit5Change(Sender: TObject);
  begin
    form2.Label6.Caption := Edit5.Text;
  end;

  procedure TForm1.Edit7Change(Sender: TObject);
  begin
    form2.Label8.Caption := Edit7.Text;
  end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Form2.ShowModal;
    end;

  procedure TForm1.Edit6Change(Sender: TObject);
  begin
    form2.Label7.Caption := Edit6.Text;
  end;

end.

Chcialbym was zapytac czy jest mozliwosc 'skrocenia' tych wszystkich label.caption...
Jest z tym duuzo roboty i ogolnie wydaje mi sie ze im mniej kodu tym lepiej ;)
 

Klawisz95

Użytkownik
Dołączył
Styczeń 24, 2010
Posty
54
A mnie się wydaje że jest jakiś sposób, dałoby radę jakoś dynamicznie to zrobić, gdybyś komponenty przywoływał sam i przechowywał je w tablicach, np:
Array[0..10]of TEdit; oraz Array[0..10]of TLabel;, wtedy zmiana ich wartości mogłaby odbywać się w pętli, o ile dobrze rozumiem problem zawarty w temacie, a do każdego edita w zdarzeniu "onChange" (czy jakoś tak to było) przypisać tą samą funkcję.
 

kanar123

Użytkownik
Dołączył
Marzec 27, 2008
Posty
451
Można tak i chyba będzie najszybciej ;]

for i:=1 to 4 do
TLabel(FindComponent('Label'+IntToStr(i))).Caption := 'Labeltekst' + IntToStr(i);
 
Do góry Bottom