AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Komponentenentwicklung mit Delphi7

Ein Thema von Christian18 · begonnen am 8. Dez 2005 · letzter Beitrag vom 8. Dez 2005
Antwort Antwort
Seite 1 von 2  1 2      
Christian18

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

Komponentenentwicklung mit Delphi7

  Alt 8. Dez 2005, 18:43
Hallo,

ich habe mal kurz eine Frage zu Komponentenentwicklung mit Delphi7. Ich bin gerade dabei eine kleine Komponente zu schreiben, womit ich Diagramme zeichnen kann. Das Diagramm ist zwar noch nicht ganz fertig, aber ich wollte schon mal schauen, wie das ganze als Komponente aussieht. Jetzt habe ich festgestellt, das ich die Komponente nur eingeschränkt nutzen kann. Wenn ich Sie auswähle, dann funktioniert zwar alles, aber wenn ich die Komponente dann auf meine Form ziehe, dann kommt ein kleiner viereckiger Kasten. Wie kann ich es machen, das wie bei der Image Komponente alles erzeugt wird (auch nicht zur laufzeit.) wenn ich bei einer image komonente die eigenschaft picture ändere, dann passiert das sofort. wie kann ich das mit meiner Komponente machen. achso hier mein code den ich bis jetzt habe. das diagramm wird in einem Image gezeichnet. mit canvas

CODE:
Delphi-Quellcode:
  var i : TImage;
      r : Boolean;
begin
  // Parameter setzen
  i:=Image1;
  r:=True;

  // Rahmen zeichnen
  if r=True then
    begin
      i.Canvas.Rectangle(0, 0, i.Width, i.Height);
    end;

  // Achsen zeichnen
  i.Canvas.MoveTo(30, 30);
  i.Canvas.LineTo(30, i.Height - 30);
  i.Canvas.LineTo(i.Width - 30, i.Height - 30);
Mit freundlichen Grüßen

Christian18
  Mit Zitat antworten Zitat
Benutzerbild von hanselmansel
hanselmansel

Registriert seit: 23. Feb 2005
Ort: Kaiserslautern
279 Beiträge
 
Delphi 2009 Enterprise
 
#2

Re: Komponentenentwicklung mit Delphi7

  Alt 8. Dez 2005, 18:54
Delphi-Quellcode:
Height := i.Height;
Width := i.Width;
Das Ganze in einem Codeabschnitt, der immer dann ausgeführt wird, wenn die Parameter von i geändert werden. Also entweder in den Setter-Methoden der entsprechenden Propertys oder evtl. im OnPaint. (Wobei OnPaint wahrscheinlich viel zu oft, und zur falschen Zeit ausgeführt wird...)
Es gibt nur sehr wenige Probleme auf dieser Welt, die sich nicht mit einigen hundert Gramm Sprengstoff lösen ließen.
  Mit Zitat antworten Zitat
Sepp

Registriert seit: 15. Sep 2004
Ort: Oberasbach
19 Beiträge
 
Delphi 6 Professional
 
#3

Re: Komponentenentwicklung mit Delphi7

  Alt 8. Dez 2005, 18:56
Hallo,

von welcher Basisklasse hast Du Dein Komponente abgeleitet?


Grüße

Sepp
  Mit Zitat antworten Zitat
Christian18

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

Re: Komponentenentwicklung mit Delphi7

  Alt 8. Dez 2005, 19:36
Zitat von Sepp:
Hallo,

von welcher Basisklasse hast Du Dein Komponente abgeleitet?


Grüße
Hallo Sepp,

ich habe es von der Basis Klasse TComponent abgeleitet. Ist das falsch???
  Mit Zitat antworten Zitat
Christian18

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

Re: Komponentenentwicklung mit Delphi7

  Alt 8. Dez 2005, 19:46
so hier ist mein kompletter code den ich bis jetzt habe.

Delphi-Quellcode:
unit Diagramm;

interface

uses
  SysUtils, Classes, ExtCtrls;

type
  TComponent1 = class(TComponent)
  private
    FRand : Boolean;
    procedure Diagramm();
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
  published
    property Rand : Boolean Read FRand Write FRand;
    { Published-Deklarationen }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Standard', [TComponent1]);
end;

procedure TComponent1.Diagramm();
  var i : TImage;
begin
  i:=TImage.Create(self);

  // Rahmen zeichnen
  if FRand=True then
    begin
      i.Canvas.Rectangle(0, 0, i.Width, i.Height);
    end;

  // Achsen zeichnen
  i.Canvas.MoveTo(30, 30);
  i.Canvas.LineTo(30, i.Height - 30);
  i.Canvas.LineTo(i.Width - 30, i.Height - 30);
end;

end.
PS: Mit den Code ist es immernoch so, das wenn ich die Komponente auf meine Form lege, das dann ein kleines Viereck erscheint und nicht wie bei einem Label der Text. wenn ich bei den eigenschaften den Rand auf True setze, dann würde ich gerne das auch sehen. also wie kann ich das machen???

MFG Christian18
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: Komponentenentwicklung mit Delphi7

  Alt 8. Dez 2005, 19:57
Hallo,

von TComponent abgeleitete Komponenten sind nicht visual, d. h. sie werden nicht gezeichnet. Beispiele dafür sind Sockets, Datenbankverbindungen, OpenDialog...
Was Du machen willst benötigt als Basisklasse mindestens TControl, hier besser TGraphicControl. Bei dieser Komponente hast Du eine Eigenschaft Canvas, mit der Du zeichnen kannst. Außerdem können TControls auf Tastendruck/Mausbewegung reagieren (Interaktion).

Gruß
xaromz
  Mit Zitat antworten Zitat
Christian18

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

Re: Komponentenentwicklung mit Delphi7

  Alt 8. Dez 2005, 20:08
und wie würde der quellcode dann aussehen wenn er danach umgebaut wird???
  Mit Zitat antworten Zitat
Benutzerbild von hanselmansel
hanselmansel

Registriert seit: 23. Feb 2005
Ort: Kaiserslautern
279 Beiträge
 
Delphi 2009 Enterprise
 
#8

Re: Komponentenentwicklung mit Delphi7

  Alt 8. Dez 2005, 20:11
Erstmal leitest du ihn von TGraphicControl ab.
Deinen Graphen kannst du dann entweder direkt auf das Canvas des GraphicControls zeichnen, oder du kopiert das Canvas aus deinem geposteten Code auf das Canvas des GraphicControls. die Höhe und Breite der Komponente musst du trotzdem anpassen.
Es gibt nur sehr wenige Probleme auf dieser Welt, die sich nicht mit einigen hundert Gramm Sprengstoff lösen ließen.
  Mit Zitat antworten Zitat
Christian18

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

Re: Komponentenentwicklung mit Delphi7

  Alt 8. Dez 2005, 20:14
Zitat von hanselmansel:
Erstmal leitest du ihn von TGraphicControl ab.
Deinen Graphen kannst du dann entweder direkt auf das Canvas des GraphicControls zeichnen, oder du kopiert das Canvas aus deinem geposteten Code auf das Canvas des GraphicControls. die Höhe und Breite der Komponente musst du trotzdem anpassen.
kannst du das mal kurz für mich machen weil ich jetzt gar nicht mehr durchsehe. bei mir läuft gerade nichts mehr.
  Mit Zitat antworten Zitat
Christian18

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

Re: Komponentenentwicklung mit Delphi7

  Alt 8. Dez 2005, 20:29
HI,

ich bins nochaml. ich habe es jetzt mal versucht. jetzt habe ich zwar schon mal ein anderes objekt auf meiner form, aber wenn ich die eigenschaft rand auf true setze, dann passier immernoch nicht. was habe ich falsch gemacht??? hier mein code:

Delphi-Quellcode:
unit Diagramm;

interface

uses
  SysUtils, Classes, Forms, ExtCtrls, Controls;

type
  TDiagramm = class(TGraphicControl)
  private
    FForm : TForm;
    FRand : Boolean;
    FHeight : Integer;
    FWidth : Integer;
    procedure Diagramm();
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
  published
    property Form : TForm Read FForm Write FForm;
    property Rand : Boolean Read FRand Write FRand;
    property Height : Integer Read FHeight Write FHeight;
    property Width : Integer Read FWidth Write FWidth;
    { Published-Deklarationen }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Standard', [TDiagramm]);
end;

procedure TDiagramm.Diagramm();
begin
  // Rahmen zeichnen
  if FRand=True then
    begin
      Canvas.Rectangle(0, 0, Width, Height);
    end;

  // Achsen zeichnen
  Canvas.MoveTo(30, 30);
  Canvas.LineTo(30, Height - 30);
  Canvas.LineTo(Width - 30, Height - 30);
end;

end.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:08 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