Autor |
Beitrag |
oneP
      
Beiträge: 71
Win XP Professional
Turbo Delphi 2006
|
Verfasst: Mo 04.05.09 21:04
Hallo zusammen,
ich bin erst ein Anfänger in Delphi-Programmierung und hab mir ein Heft von KnowWare zum lernen gekauft. Da drin wird unter anderem ein kleines Programm beschrieben, mit dem man durch die Angabe von zwei Längen ein Rechteck erscheinen lassen kann. Das Programm hab ich eingetippt, so wie es im Buch war, und es wurden auch keine Fehler angezeigt.
Wenn ich es dann starte und zwei Werte eintippe, erscheint aber kein Rechteck
dieser Code soll im Programm das Rechteck aufrufen:
Delphi-Quelltext 1: 2: 3: 4:
| procedure TRechteck.Zeichnen; begin Form5.Canvas.Rectangle(10, 10, Round(Breite), Round(Hoehe)); end; |
bei mir werden auch zB Linien nicht angezeigt (mit dem Moveto; Lineto -Befehl)
ach ja, und ich benutze das Programm Turbo Delphi 2006
würd gern wissen ob das am Computer, DelphiProgramm oder am Programmcode liegt. hoffentlich habt ihr ne Lösung für das Problem.
thx im vorraus
Moderiert von Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 04.05.09 21:12
Welche Werte haben denn Breite und Höhe?
|
|
oneP 
      
Beiträge: 71
Win XP Professional
Turbo Delphi 2006
|
Verfasst: Mo 04.05.09 21:17
diese Werte werden dann ins fertige programm eingegeben
die sind doch im prinzip egal (oder?)
ich habe zb breite 300 und höhe 250 eingetippt
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 04.05.09 21:29
Nee, egal sind die nicht, wenn eins von beiden 0 ist, wird auch nichts gezeichnet. Hast Du denn auch die richtige Zeichenfläche am Wickel(Form5.Canvas)?
|
|
oneP 
      
Beiträge: 71
Win XP Professional
Turbo Delphi 2006
|
Verfasst: Mo 04.05.09 21:31
Ja das Formular heißt Form5
(wurd automatisch so benannt)
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Mo 04.05.09 21:35
oneP hat folgendes geschrieben : | Ja das Formular heißt Form5
(wurd automatisch so benannt) |
Kann/sollte man aber auf etwas Sinnvolles abändern
_________________ Markus Kinzler.
|
|
oneP 
      
Beiträge: 71
Win XP Professional
Turbo Delphi 2006
|
Verfasst: Mo 04.05.09 22:01
jaa..
is auch nur so ein übungs/probe Programm
was ich noch sagen wollt ist, dass wenn ich einfach ein formular mit einem Button mach und dann ein rechteck programmiere dann wird es angezeigt.
Aber bei dem Programm wo man 2 werte selbst eingeben muss erscheint das rechteck nicht
|
|
jakobwenzel
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Mo 04.05.09 22:03
Dann wäre es vielleicht mal an der Zeit mehr Code zu zeigen, denn in dem bisherigen Teil scheint der Fehler ja nicht zu liegen. 
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
oneP 
      
Beiträge: 71
Win XP Professional
Turbo Delphi 2006
|
Verfasst: Mo 04.05.09 22:13
jakobwenzel hat folgendes geschrieben : | Dann wäre es vielleicht mal an der Zeit mehr Code zu zeigen, denn in dem bisherigen Teil scheint der Fehler ja nicht zu liegen.  |
ok das ist das Programm:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75:
| unit Unit5;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type
Trechteck = class Breite: single; Hoehe: Single; function Flaeche: Single; function Umfang: Single; procedure Zeichnen; end;
TForm5 = class(TForm) Edit1: TEdit; Edit2: TEdit; Panel1: TPanel; Panel2: TPanel; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private public end;
var Form5: TForm5; Rechteck: TRechteck;
implementation
{$R *.dfm}
function TRechteck.Flaeche: Single; begin result := Breite* Hoehe; end;
function TRechteck.Umfang: Single; begin Result := 2 * (Breite + Hoehe); end;
procedure TRechteck.Zeichnen; begin Form5.Canvas.Rectangle(10, 10, Round(Breite), Round(Hoehe)); end;
procedure TForm5.Button1Click(Sender: TObject); begin Repaint; Rechteck.Breite := StrToFloat (Edit1.Text); Rechteck.Hoehe:= StrToFloat (Edit2.Text); Panel1.caption:= FloatToStr(Rechteck.Flaeche); Panel2.Caption:= FloatToStr(rechteck.Umfang); Rechteck.Zeichnen; end;
procedure TForm5.FormCreate(Sender: TObject); begin Rechteck := TRechteck.Create; end;
end. |
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Mo 04.05.09 22:51
Mal ne "blöde" Frage..
an welcher Position liegen deine Edit Felder, Label, und vor allem die Panel?
Außerdem wäre für sowas eine Paintbox besser geeignet.
Ganz nebenbei gibst du das Rechteck auch nicht frei, und es wäre "schöner", wenn du der Instanz ein Canvas übergibst (z.B. im Constructor), wo es drauf malen soll.
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
oneP 
      
Beiträge: 71
Win XP Professional
Turbo Delphi 2006
|
Verfasst: Di 05.05.09 15:46
Formular: Höhe 335 Breite 432
die 2 Edit Felder liegen auf der rechten Seite untereinander (bei der Breite von 312). Hier sind auch zwei kleine Panels die die Fläche und Umfang anzeigen sollen. Der Button liegt unten bei einer Höhe von 240.
(kann man vielleicht irgendwie Bilder Posten??)
Also liegt es an der Positionierung?
|
|
oneP 
      
Beiträge: 71
Win XP Professional
Turbo Delphi 2006
|
Verfasst: Mo 11.05.09 15:12
hat vielleicht noch jemand das selbe Problem?
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 11.05.09 15:33
oneP hat folgendes geschrieben : | (kann man vielleicht irgendwie Bilder Posten??) |
Du kannst ein Bild in den Anhang legen, genauso aber auch einfach dein Projekt (.dpr, .pas und .dfm Dateien als Zip).
|
|
oneP 
      
Beiträge: 71
Win XP Professional
Turbo Delphi 2006
|
Verfasst: Mo 11.05.09 15:40
hier das Bild:
Moderiert von Narses: BMP->PNG
Einloggen, um Attachments anzusehen!
|
|
ffgorcky
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: Mo 11.05.09 15:41
Also ich sehe leider nirgendwo eine Angabe, wo die Linien-Dicke festgelegt wird.
Wenn Die Linie also nur eine Breite von 0,001 mm hat, dann wäre sie ja auch sehr schlecht zu sehen - oder?
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Mo 11.05.09 15:44
Linien haben aber grundsätzlich eine Dicke von 1 Pixel, wenn man es nicht einstellt 
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
oneP 
      
Beiträge: 71
Win XP Professional
Turbo Delphi 2006
|
Verfasst: Mo 11.05.09 15:45
hää?
wie wird die liniendicke festgelegt??
hab gedacht des rechtck wird dann ganz normal angezeigt wenn man die längen angibt.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 11.05.09 15:49
Also dein Quelltext ist zwar nicht richtig wie schon gesagt wurde (Freigabe und so), aber funktionieren tut es...
Siehe Anhang.
// EDIT:
Mal nen sauberes Beispiel, siehe zweiten Anhang.
Einloggen, um Attachments anzusehen!
|
|
oneP 
      
Beiträge: 71
Win XP Professional
Turbo Delphi 2006
|
Verfasst: Mo 11.05.09 16:39
was ist an meinem Quelltext falsch?
schließlich hab ich es ja aus nem Übungsbuch genauso übertragen (da ist kein einziger schreibfehler drin). Der Beschreibung im Buch nach müsste es funktionieren
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 11.05.09 17:13
Dein Quelltext funktioniert ja auch, siehe Screenshot, da habe ich 1:1 deinen Quelltext verwendet. Nur Zahlen unter 10 werden nicht klappen, da das Quadrat dann seinen rechten unteren Punkt links von oder oberhalb des ersten Punktes hat.
Ich sagte ja schon, häng dein Projekt doch einmal an, vielleicht hast du vergessen das Ereignis OnClick mit dem Button zu verbinden, so dass das gar nicht ausgeführt wird oder so...
|
|