DELPHI - pomoc s programom

Programovacie jazyky, rady, poradňa...
lusia15
Amateur
Amateur
Príspevky: 10
Registrovaný: 23 feb 2008, 11:14
Kontaktovať používateľa:

DELPHI - pomoc s programom

Príspevok od používateľa lusia15 »

tu je priklad:

Kód: Vybrať všetko

Napiste proceduru na nakreslenie jednej tehlicky - oranzovy obdlznik velkosti sirka x vyska pre suradnice (x,y). Napiste program, ktory vylozi z tychto tehliciek celu graficku plochu, pricom ziadna z nich nesmie z plochy vypadnut.
Mam toto, ale kresli mi to len 1 tehlicku vlavo hore.

Kód: Vybrať všetko

procedure TForm1.Button1Click(Sender: TObject);
procedure tehlicka(sirka, vyska:Integer);
var x,y:Integer;
begin
x:=0; y:=0;
 Image1.canvas.Brush.color:=RGB(255,150,80);
 Image1.canvas.Rectangle(x,y,x+sirka,y+vyska);
end;

var x,y,sirka,vyska:Integer;
begin
y:=0;    x:=0; sirka:=StrToInt(Edit1.Text); vyska:=StrtoInt(Edit2.Text);
  while x+sirka < Image1.Width do
  begin
  x:=x+sirka;
  tehlicka(sirka,vyska);
      while y +vyska< Image1.Height do
      begin
      y:=y+vyska;
      tehlicka(sirka,vyska);
      end;
   end;
end;                
Mohli by ste mi to opravit? Dakujem
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: DELPHI - pomoc s programom

Príspevok od používateľa audiotrack »

v procedúre tehlička si prekrývaš premenné x a y, ktoré nastavíš na nulu. Ty potrebuješ tie x a y z metody buttonClick. Takáto rada by ti mala stačiť, ak nie, tak ti to opravím ale je to iba zmazanie dvoch riadkov
lusia15
Amateur
Amateur
Príspevky: 10
Registrovaný: 23 feb 2008, 11:14
Kontaktovať používateľa:

Re: DELPHI - pomoc s programom

Príspevok od používateľa lusia15 »

no skusala som tam vymazat v procedure tehlicka x a y... no ale asi si nemyslel to, lebo to nejde... mohol by si mi to prosim ta opravit?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: DELPHI - pomoc s programom

Príspevok od používateľa audiotrack »

ale no, schválne som nenapísal že ešte presunúť deklaráciu premenných nad pomocnú procedúru, predpokladal som totiž že to je samozrejmosť

Kód: Vybrať všetko

procedure TForm1.Button1Click(Sender: TObject);
var x,y,sirka,vyska:Integer;

procedure tehlicka(sirka, vyska:Integer);
var x,y:Integer;
begin
Image1.canvas.Brush.color:=RGB(255,150,80);
Image1.canvas.Rectangle(x,y,x+sirka,y+vyska);
end;

begin
y:=0;    x:=0; sirka:=StrToInt(Edit1.Text); vyska:=StrtoInt(Edit2.Text);
  while x+sirka < Image1.Width do
  begin
  x:=x+sirka;
  tehlicka(sirka,vyska);
      while y +vyska< Image1.Height do
      begin
      y:=y+vyska;
      tehlicka(sirka,vyska);
      end;
   end;
   end;
a teraz si ešte skús opraviť chybu v tom cykle
lusia15
Amateur
Amateur
Príspevky: 10
Registrovaný: 23 feb 2008, 11:14
Kontaktovať používateľa:

Re: DELPHI - pomoc s programom

Príspevok od používateľa lusia15 »

pozerala som to, ale nenasla som tam nic.. ked som si to porovnala aj s inymi prikladmi bolo to pisane podobne ako mam hento.... ja uz fakt neviem co tam mozem mat zle :( opravis mi to prosim ta este? bola by som ti velmi vdacna.. asi budem mat chybu vo while si myslim lebo mi nekresli ziadne tehlicky, ale ked som tam aj nieco zmenila stale to bolo rovnake
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: DELPHI - pomoc s programom

Príspevok od používateľa audiotrack »

Kód: Vybrať všetko

procedure TForm1.Button1Click(Sender: TObject);
var x,y,sirka,vyska:Integer;

procedure tehlicka(sirka, vyska:Integer);

begin
Image1.Canvas.Pen.Width:=3;
Image1.canvas.Brush.color:=RGB(255,150,80);
Image1.canvas.Rectangle(x,y,x+sirka,y+vyska);
end;

begin
Image1.Canvas.Fillrect(Image1.ClientRect);
y:=0; x:=0; sirka:=StrToInt(Edit1.Text); vyska:=StrtoInt(Edit2.Text);

  while x+sirka < Image1.Width do
  begin
  tehlicka(sirka,vyska);
    while y+vyska < Image1.Height do
     begin
     tehlicka(sirka,vyska);
     y:=y+vyska;
     end;
     y:=0;
     x:=x+sirka;
  end;
end;
Napísať odpoveď