Autor Beitrag
oneP
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 71

Win XP Professional
Turbo Delphi 2006
BeitragVerfasst: 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:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TRechteck.Zeichnen;
   begin
     Form5.Canvas.Rectangle(1010, 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 user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 04.05.09 21:12 
Welche Werte haben denn Breite und Höhe?
oneP Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 71

Win XP Professional
Turbo Delphi 2006
BeitragVerfasst: 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



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 71

Win XP Professional
Turbo Delphi 2006
BeitragVerfasst: Mo 04.05.09 21:31 
Ja das Formular heißt Form5
(wurd automatisch so benannt)
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mo 04.05.09 21:35 
user profile icononeP hat folgendes geschrieben Zum zitierten Posting springen:
Ja das Formular heißt Form5
(wurd automatisch so benannt)

Kann/sollte man aber auf etwas Sinnvolles abändern

_________________
Markus Kinzler.
oneP Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 71

Win XP Professional
Turbo Delphi 2006
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: 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. :wink:

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
oneP Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 71

Win XP Professional
Turbo Delphi 2006
BeitragVerfasst: Mo 04.05.09 22:13 
user profile iconjakobwenzel hat folgendes geschrieben Zum zitierten Posting springen:
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. :wink:


ok das ist das Programm:

ausblenden volle Höhe Delphi-Quelltext
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
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  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(1010, 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 71

Win XP Professional
Turbo Delphi 2006
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 71

Win XP Professional
Turbo Delphi 2006
BeitragVerfasst: Mo 11.05.09 15:12 
hat vielleicht noch jemand das selbe Problem?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 11.05.09 15:33 
user profile icononeP hat folgendes geschrieben Zum zitierten Posting springen:
(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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 71

Win XP Professional
Turbo Delphi 2006
BeitragVerfasst: Mo 11.05.09 15:40 
hier das Bild:

Moderiert von user profile iconNarses: BMP->PNG
Einloggen, um Attachments anzusehen!
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 71

Win XP Professional
Turbo Delphi 2006
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 71

Win XP Professional
Turbo Delphi 2006
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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...