AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Abschlussprojekt Informatik Leistungskurs
Thema durchsuchen
Ansicht
Themen-Optionen

Abschlussprojekt Informatik Leistungskurs

Ein Thema von Christian18 · begonnen am 23. Jan 2007 · letzter Beitrag vom 23. Jan 2007
Antwort Antwort
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#1

Abschlussprojekt Informatik Leistungskurs

  Alt 23. Jan 2007, 16:35
Hallo,

als Abschlussprojekt im Informatik Leistungskurs, habe ich mir folgendes überlegt. Ich hab mir gedacht, das ich ein Programm schreibe, welches mir diverse mathematische Funktionen Grafisch Darstellt. Mein Projekt vorschlag ist auch schon genehmigt worden.

Es sollen später Lineare und Quadratische Funktionen eingezeichnet werden.

Bsp.:

Lineare Fkt.
f(x) = 3x + 7

Quadr. Fkt.
f(x) = x² + 4x - 9

Desweiteren sollen alle Shnittpunkte berechnet werden. Also, Nullstellen und Schnittpkt.e mit der y- Achse

Eine weitere Bedingung für die Realisierung des Projektes ist, das wir alles in einer anderen Klasse auslagern. Jetzt weiß ich leider bei der Realisierung nicht weiter. Wir haben sowas noch nicht im Unterricht besprochen.

Ich habe es mal versucht, aber es funktioniert leider nicht. Es kommt auch eine Fehlermeldung, es wird bloß nix gezeichnet.

Hier mein Code:

Delphi-Quellcode:
unit UKoordinatensystem;

interface

uses
  ExtCtrls, Controls;

type
  TKoordinatensystem = class
    constructor Create();
    procedure Koordinatensystem();
    destructor Destroy();
  private
    Image : TImage;
    FWidth : Integer;
    FHeight : Integer;
    FTop : Integer;
    FLeft : Integer;
    FRand : Integer;
    FParent : TWinControl;
  public

  published
    property Width : Integer Read FWidth Write FWidth;
    property Height : Integer Read FHeight Write FHeight;
    property Top : Integer Read FTop Write FTop;
    property Left : Integer Read FLeft Write FLeft;
    property Rand : Integer Read FRand Write FRand;
    property Parent : TWinControl Read FParent Write FParent;
  end;

implementation

constructor TKoordinatensystem.Create();
begin
  Image:=TImage.Create(FParent);

  Image.Width:=FWidth;
  Image.Height:=FHeight;
  Image.Top:=FTop;
  Image.Left:=FLeft;

  Image.Parent:=FParent;

  Koordinatensystem();
end;

procedure TKoordinatensystem.Koordinatensystem();
begin
  // Achsen zeichnen
  Image.Canvas.MoveTo(FWidth div 2, FRand);
  Image.Canvas.LineTo(FWidth div 2, FHeight - FRand);
end;

destructor TKoordinatensystem.Destroy();
begin
  Image.Free();
end;

end.
Hier der aufruf:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
  var k : TKoordinatensystem;
begin
  k:=TKoordinatensystem.Create();

  k.Width:=300;
  k.Height:=300;
  k.Top:=100;
  k.Left:=100;
  k.Rand:=10;

  k.Parent:=Form1;
end;
  Mit Zitat antworten Zitat
Thorben_K

Registriert seit: 22. Okt 2006
Ort: Darmstadt
105 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Abschlussprojekt Informatik Leistungskurs

  Alt 23. Jan 2007, 17:10
Hallo

erst ich nehme mal an du willst das auf dem bildschirm darstallen, also solltest du von TComponent oder besser noch von TPaintBox ableiten, so habe ich es gemacht als ich sowas gemacht habe


Desweiteren solltest du die ersten 3 Proceduren im Puplic teil rein packen, ist sauberer.
Thorben
  Mit Zitat antworten Zitat
Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Abschlussprojekt Informatik Leistungskurs

  Alt 23. Jan 2007, 17:12
Wenn du deinen Code Schritt für Schritt durchgehst, müsste dir schon mal folgendes aufallen:

- Du setzt im Create() das Parent des Images auf FParent. Zu diesem Zeitpunkt ist FParent aber nil
- Du rufst einmal im Create() die Prozedur Koordinatensystem() auf, welche das Koordinatensystem zeichnet
- Beim Aufruf wird also die Klasse erzeugt und auf dem Image gezeichnet, aber erst DANACH setzt du die Werte wie Breite, Höhe, etc. und auch erst danach setzt du das Parent

Entweder übergibst du all diese Informationen beim Aufruf der Create-Prozedur, was nicht elegant wäre, oder besser du rufst die Prozedure Koordinatensystem() selbst auf. D.h. den Aufruf im Constructor löscht du raus. Des Weiteren würde ich dann FParent der Create()-Prozedur übergeben, oder aber du schreibst eine Setter-Methode, die Image.Parent := FParent setzt.

Nachdem du dann also die Klasse erzeugst und allen Eigenschaften die Werte zugewiesen hast, würdest du dann Koordinatensystem() selbst aufrufen. Ich würde daher dann auch die Prozedur umbennen, z.B. in ZeichneKoordinatensystem() oder nur Zeichne().
Sascha
  Mit Zitat antworten Zitat
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#4

Re: Abschlussprojekt Informatik Leistungskurs

  Alt 23. Jan 2007, 17:13
Hi,

ja ich will das zeichnen, warum zeigt mir Delphi das was ich gezeichnet habe nicht an?
  Mit Zitat antworten Zitat
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#5

Re: Abschlussprojekt Informatik Leistungskurs

  Alt 23. Jan 2007, 17:20
Hallo,

wenn ich einen Button dyn. erzeuge, dann muss ich aber nur Breit, Höhe, Top und Left setzen und die Eigenschaft Parent und dann wird er mir angezeigt. Da habe ich auch keine Weitere procedure, die ich aufrufen muss, damit alle werte gesetzt werden. Wie ist denn das Problem dort gelöst???
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#6

Re: Abschlussprojekt Informatik Leistungskurs

  Alt 23. Jan 2007, 17:22
Zitat von Christian18:
ja ich will das zeichnen, warum zeigt mir Delphi das was ich gezeichnet habe nicht an?
HI,
das hat Sacha Dir doch gerade erklärt. Der Parent ist die grafische Komponente, die dein Image anzeigen soll. Dem Image wird nur einmal ein solcher Parent zugewiesen und der ist nil (nicht vorhanden), das Image wird also auf keiner Komponente dargestellt. Änderst Du den Wert von FParent, so interessiert sich das Image nicht für den neuen Wert (bekommt das gar nicht mit).
Du musst also nur dafür sorgen, dass die Änderung von FParent auch zu einer Änderung von Image.Parent führt (wie das geht hat Sacha erklärt).

An sich solltest Du aber vielleicht auch gleich darüber nachdenken das Image von außen in die Komponente zu reichen, so kann der Designer des Formulars über die Position und Größe des Image entscheiden und es dann an deine Methode übergeben. Für das Formular-Design ist also zur Designzeit bereits das Bild sichtbar, für deine Klasse ist nur wichtig, dass sie eine Zeichenfläche hat, nicht wo sie herkommt.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Thorben_K

Registriert seit: 22. Okt 2006
Ort: Darmstadt
105 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Abschlussprojekt Informatik Leistungskurs

  Alt 23. Jan 2007, 17:25
Du kannst einfach mal den Parent per Parameter im Construktor mitgeben, dass könnte das probleme schön lösen

aber auch dann ist die breite und die höhe usw nicht festgelegt.

Das Image einfach später erstellen, also nicht im Construktor von TKoordinatenSystem
Thorben
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz