AGB  ·  Datenschutz  ·  Impressum  







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

Fehlermeldung beim canvasobject in Tshape

Ein Thema von biochip · begonnen am 16. Jan 2005 · letzter Beitrag vom 24. Jan 2005
Antwort Antwort
Seite 1 von 2  1 2      
biochip

Registriert seit: 10. Mai 2004
Ort: Hartha
9 Beiträge
 
Delphi 6 Personal
 
#1

Fehlermeldung beim canvasobject in Tshape

  Alt 16. Jan 2005, 22:25
Hi, Wer kann helfen beim nutzen des Canvasobjects laden eines Bildes tritt s. code
Exception der Klasse EAcessvioalition auf.

Wie kann ich auf dem canvas der Tshape-Komponente zeichnen.

Bei d3 brauchte ich nur eine instanz erzeugen
s:=ts.Create(form1);
s.Parent:=form1;
s.Width:=180;
s.Height:=270;
und dann cannvas.zeichenroutinen fertig

Wie mache ich das bei D6 Personal um auf die ZeichenFläche mit canvas.Routinen zu greifen.
Das shapeobject soll dann auf auser die Standartdshapes wie stellipse
mit Polygon Dreiecke oder andere Figuren Zeichnen.
Nur mit Image,Form habe ich keine Problehme der Art.
Aber Paintbox,Tpanel......u.s.w

var canvas:Tcanvas
Muss ich hier die canvas:=Tcanvas.create(self)
oder property canvas:Tcanvas read ...... write...... Defaults ..
Habe auch im Forum nichts gefunden auser in Groupbox zeichnen
oder s.canvas.handle
oder api get....DC:HDC

Vielen Dank im voraus

biochip


Delphi-Quellcode:
constructor ts.create(aowner:tcomponent);
begin
inherited create(aowner);

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Try
s.Brush.Bitmap.Width:=186;//Hier Fehlermeldung Exception der Klasse Eacessvioalition
s.Brush.Bitmap.height:=276;
s.Brush.Bitmap.PixelFormat:=pf8bit;//Das Bild hat 8 Pixel pro Bit 256 Farben
s.Brush.Bitmap.LoadFromFile('figurx2.bmp');
//s.Brush.Bitmap.Canvas.Rectangle(0,0,200,200);
// s.canvas. .......
except
s.free;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
s:=ts.Create(form1);
s.Parent:=form1;
s.Width:=180;
s.Height:=270;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Fehlermeldung beim canvasobject in Tshape

  Alt 16. Jan 2005, 23:19
Hi,

Was soll "TS" denn für eine Klasse sein? Und von welchem Typ ist TS.Brush? Ich versteh noch nicht ganz, was du erreichen willst

Die Zugriffsverletzung kommt wahrscheinlich daher, dass S.Brush.Bitmap noch nicht exisitert. Du musst es im Contructor von "TS" erst erzeugen.
Dani H.
  Mit Zitat antworten Zitat
biochip

Registriert seit: 10. Mai 2004
Ort: Hartha
9 Beiträge
 
Delphi 6 Personal
 
#3

Re: Fehlermeldung beim canvasobject in Tshape

  Alt 18. Jan 2005, 19:13
Hi, Dani Danke erst eimal das du versucht zu helfen.
Du hast Recht wenn Ein object in der Tshape nicht existiert kann ich nicht drauf zu greifen .
Wenn man nach der erzeugten intanz hier z.B
S:Ts;
s:=Ts.create(self);
wenn S. eingibt in Delphi bei allen Objectvariablen werden die Methoden, Functionen,Var,Propertys, Ereignisseigenschaften , angezzeigt die wie hier in Tshape deklariert wurden und die benötigten units auf die sie zugreift.
Meine Frage all diese sind dann auch für mich verfügbar oder sehe ich das falsch.
S.Brush.---Metoden,Var u.s.w werden angezeigt
Nach s. <Enter> gedrückt wird nur die Propery Brush:Tbrush angezeigt und das ist nur die Eigenschaft brush ist dsa richtig.!
aber das Tcanvasobject wird nicht angezeigt,muss erzeugt weren ist das richtig?
aber wie ? Darum geht mirs ja

--------------------------------------------------------------------
var canvas:Tcanvas
Muss ich hier die canvas:=Tcanvas.create(self)
oder property canvas:Tcanvas read ...... write...... Defaults ..
Habe auch im Forum nichts gefunden auser in Groupbox zeichnen
------------------------------------------------------------------------
oder s.canvas.handle
oder api get.... DC:HDC brauche ich ein Handle Ts.canvas.handle und über API function Zugriff auf Tcanvas ! oder wie ich oben schon angegegeben hatte

In Delphionlnehilfe D6 Objechirerchie kein Canvssobject vorhanden also muss erzeugt werden
weil Borland keins spendiert hat wie in D3 ich kenne nur Personal .
In D3 ist es demzufolge schon imlementiert. u. brauch nicht erzeugt werden.
da nützt auch der Konstrukt canvas:=Tcanvas.create nichts wenn Tshape kein Tcanvas besitzt.
Gibt es den Literatur darüber oder ist das In der Proffessional Online viel mehr enthalten
ich weis es ja nicht.

Kannst Du mir ein Beispiel bringen wie man das macht ?
Da wäre ich sehr dankbar oder wie kan mans sonst lernen .(D-bücher Foren Wo);

Vielen Dank im voraus

biochip
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Fehlermeldung beim canvasobject in Tshape

  Alt 19. Jan 2005, 19:22
Poste doch mal die Projekt - Datei(en), dann kann ich dir sagen, was genau mit der Klasse nicht stimmt =)
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
biochip

Registriert seit: 10. Mai 2004
Ort: Hartha
9 Beiträge
 
Delphi 6 Personal
 
#5

Re: Fehlermeldung beim canvasobject in Tshape

  Alt 19. Jan 2005, 22:11
Hi, Dani ich habe in der Onlinehilfe wegen den Tcanvas nochmal nach geschaut und habe eine
Beispielprocedur gefunden die aber meistens nur halwegs eine Einführung geben aber immer noch verfollstädigt werden müssen.
Bei mir wärs ein richtiges Beispiel wenn es wie ein Demo funktioniert und man dann selbst den Schwierigkeitsgrad nach Bedarf erhöht.

Hier soll auch Canvasobject erzeugt werden.Ja wenns funktioniert kann man etwas lernen.
Das Borland Bsp.prog:

Wenn Komponenten eingefügt werden in eine abgeleitete Klasse dann Actionlist verwenden .
Mit Actionlist habe ich nicht Probiert kann Ursache sein habe es noch nicht genutzt wei auch nicht wie.Und nun das Borlandbeispiel auch das hilft mir wie Canvas implementiert wird.
In das leere Image hatte ich ein bild geladen.
Hoffentlich kommt es mit deiner hilfe zum laufen.
Gruss

biochip
.................................................. .........................


Ab hier Borland Beispiel

TCanvas.Create, GetDeviceContext, Handle, Palette (Beispiel)

Mit der Methode GetFormImage können Sie ein Bitmap eines Formulars ermitteln. Die folgende Methode kann einer benutzerdefinierten, von TWinControl abgeleiteten Klasse hinzugefügt werden, um diese als Bitmap zu speichern.
Delphi-Quellcode:
type
  LogPal = record
  lpal : TLogPalette;
  dummy:Array[0..255] of TPaletteEntry;
  end;

procedure TMyControl.SaveAsBmp(fileName: TFileName);
var
  Source: TComponent;
  SysPal : LogPal;
  tempCanvas: TCanvas;
  sourceRect, destRect: TRect;
  image2save: TImage;
  notUsed: HWND;
begin
  tempCanvas := TCanvas.Create;
  try
    tempCanvas.Handle := GetDeviceContext(notUsed);//Hier kam Fehlermeldung wie bei Tshape
    image2save:=TImage.create(self);

    try
      with image2save do
      begin
        Height := Self.Height;
        Width := Self.Width;
        destRect := Rect(0,0,Width,Height);
        sourceRect := destRect;
        Canvas.CopyRect(destRect,tempCanvas,sourceRect);
        SysPal.lPal.palVersion:=$300;
        SysPal.lPal.palNumEntries:=256;
        GetSystemPaletteEntries(tempCanvas.Handle,0,256,SysPal.lpal.palPalEntry);
        Picture.Bitmap.Palette:= CreatePalette(Syspal.lpal);

      end;
      image2save.Picture.SaveToFile(fileName);
    finally
     image2save.Free;
    end;
  finally
    tempCanvas.Free;
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Fehlermeldung beim canvasobject in Tshape

  Alt 19. Jan 2005, 23:15
Wie blöd kann man eigentlich sein? Ich hab in deinem ersten Beitrag die eigentliche Frage komplett übersehen. Sorry.

Zitat:
Wie kann ich auf dem canvas der Tshape-Komponente zeichnen.
Auf TShape gar nicht, weil die property Canvas nicht im published Abschnitt deklariert ist. Wenn du eine Komponente haben willst, die auch Polygone und Dreiecke usw. zeichnen kann, musst du dir wohl selbst eine schreiben. Wenn du einfach nur eine Form irgendwohin zeichnen lassen möchstest, platzier eine Paintbox (Register "System") auf dem Formular und zeichne sie im OnPaint Event.

oder du guggst mal bei www.torry.net, ob es da eine Komponente gibt, die mehr als Rechtecke und Kreise darstellen kann
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
biochip

Registriert seit: 10. Mai 2004
Ort: Hartha
9 Beiträge
 
Delphi 6 Personal
 
#7

Re: Fehlermeldung beim canvasobject in Tshape

  Alt 20. Jan 2005, 14:37
Hi, Kann mir jemand das Borlandbeispiel(Methode mit der ein canvas implmentiert wird) mit codeschnipsel von einer Klasse ableiten das es als Demo Minimalvariante so das nur das Prinzip erkennbar ist funktioniert.

vielen Dank im voraus

Gruss
Frank
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: Fehlermeldung beim canvasobject in Tshape

  Alt 21. Jan 2005, 00:07
Moin!

Meinst du z.B. eine einfache Komponente die eigentlich nix weiter macht als ihr Canvas zu bekritzeln? Dann schau mal hier nach - diese Komponente macht auch nicht mehr...

MfG
Muetze1
  Mit Zitat antworten Zitat
biochip

Registriert seit: 10. Mai 2004
Ort: Hartha
9 Beiträge
 
Delphi 6 Personal
 
#9

Re: Fehlermeldung beim canvasobject in Tshape

  Alt 24. Jan 2005, 03:57
Hi,muetze1
Sehr vielen Dank für diese Komponente.Habe sie als object getestet also noch nicht in Palette aufgenommen.
Ich habe Probleme damit vieleicht kannst du mir Tipps geben.

1. Wie kann ich in Textout nummerischen String eingeben z.B mit IntTostr geht nicht da direkt von TCosttomControl abgeleitet oder?
Delphi-Quellcode:
 
Procedure TColorPanel.Paint;
begin
.........................
canvas.textout(.., .., Nummerischen String);//mit IntTostr geht nicht
canvas.textout( , ,char(ord(tag +48)); //mit char geht das kann schon der Compiler

2. Kan man Komponente ergänzen das Objecte zueinander Transparent sind .Object zu Form Transparent;
So das z.B 2 verschiedene Dreieckeobjecte so zusammen kommen können das der Transparente Teil nicht das andere Dreiecks Objekt voll verdeckt .So wie es bei Image.canvas objecten geht.
Also in Punkt 1.u. 2. nur object Zugriff keine Komponentenpalette.


3. Nach aufnahme in Palette kann man dann auch auf den Canvas krizel(durch die Propertys )?

Vielen Dank im voaus

Gruss

Biochip
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Fehlermeldung beim canvasobject in Tshape

  Alt 24. Jan 2005, 04:14
Erstell bitte für neue Fragen neue Threads.

Und btw. Warum sollte IntToStr nicht gehen, um einen Integer in einen String zur Ausgabe umzuwandeln?

Delphi-Quellcode:
const
  Number = 123456;
begin
  Canvas.TextOut(10, 10, IntToStr(Number));
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 16:32 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