![]() |
teechartgrafik in groupbox speichern
Liste der Anhänge anzeigen (Anzahl: 1)
delphi xe6
teechart 2014 pro xe6 Ich möchte die groupbox1 (rechter Teil) mit den drei unterschiedlichen Grafiken speichern. Dazu müsste es einen relativ einfachen befehl gebebn, den ich so nicht kenne. |
AW: teechartgrafik in groupbox speichern
Meinst du vielleicht TChart.SaveToBitmapFile oder TChart.SaveToMetafile?
|
AW: teechartgrafik in groupbox speichern
Ja, und der Befehl ist so geheim, wie das Format in das du speichern möchtest.
Tipp mal 42 in den Editor, dann wird da schon was gehen ... :roll: |
AW: teechartgrafik in groupbox speichern
Ich möchte die groupbox speichern (IN der groupbox sind die drei grafiken)
|
AW: teechartgrafik in groupbox speichern
Du meinst sowas wie GroupBox.SaveToFile?
|
AW: teechartgrafik in groupbox speichern
ja, schon, aber wie rufe ich das auf?
mit groupbox1.savetofile('123.png') etwas klappt das nicht |
AW: teechartgrafik in groupbox speichern
Zitat:
Sherlock |
AW: teechartgrafik in groupbox speichern
Delphi-Quellcode:
var
Bitmap: TBitmap; begin Bitmap := TBitmap.Create; try Bitmap.SetSize(GroupBox1.Width, Groupbox1.Height); PaintToCanvas(Bitmap.Canvas); Bitmap.SaveToFile('123.png'); finally Bitmap.Free; end; end; |
AW: teechartgrafik in groupbox speichern
Das sieht ja ganz gut aus, aber der Befehl PaintToCanvas wird bei mir nicht übernommen.
|
AW: teechartgrafik in groupbox speichern
nur mit diesem Befehl
groupbox1.savetofile('123.png') [/B] lautet der Hinweis: [dcc32 Fehler] w31_WaehlerwanderungGrafik.pas(242): E2003 Undeklarierter Bezeichner: 'savetofile' |
AW: teechartgrafik in groupbox speichern
Liste der Anhänge anzeigen (Anzahl: 2)
Ich glaube, das meinte er auch nur eher als Witz. Aber wenn ich dich nicht falsch verstehe können wir uns ein "SaveToFile" doch so selber bauen, oder?
Delphi-Quellcode:
Der Button2 sagt
type
TWinControlHelper = class helper for Vcl.Controls.TWinControl public procedure SaveToFile(const fileName: String); virtual; end; procedure TWinControlHelper.SaveToFile(const fileName: String); var DC: HDC; bmp: TBitmap; begin DC := GetWindowDC(Handle); try bmp := TBitmap.Create(); try bmp.SetSize(ClientWidth, ClientHeight); BitBlt( bmp.Canvas.Handle, 0, 0, bmp.Width, bmp.Height, DC, 0, 0, WinApi.Windows.SRCCOPY ); bmp.SaveToFile(fileName); finally bmp.Destroy(); end; finally ReleaseDC(Handle, DC); end; end;
Delphi-Quellcode:
. Was dabei herauskommt siehst du im Anhang. Ist doch richtig so, oder?
procedure TForm15.Button2Click(Sender: TObject);
begin GroupBox1.SaveToFile('x:\myGroupbox.bmp); end; |
AW: teechartgrafik in groupbox speichern
Na ja, so ab und zu wäre doch bei einigen Antworten doch ein kleines Smiley sinnvoll gewesen, oftmals nimmt man die Antworten sonst zu ernst.
Nun zur Frage und eine mögliche Lösung: 1. Bei der Groupbox ist Canvas (leider) nicht published, also müssen wir als erstes eine Ableitung der Groupbox erstellen und den Canvas als published definieren:
Delphi-Quellcode:
2. Jetzt sollte das Speichern der Groupbox als Bild eigentlich keine Probleme mehr darstellen:
type TNewGroupBox = class(TGroupBox)
public property Canvas; end;
Delphi-Quellcode:
var Bitmap: TBitmap; Rect: TRect; begin Rect.Left:= 0; Rect.Top:= 0; Rect.bottom:= groupbox1.Height; Rect.Right:= groupbox1.Width; Bitmap := TBitmap.Create; Bitmap.SetSize(Groupbox1.Width, Groupbox1.Height); Bitmap.Canvas.CopyRect(Rect,TNewGroupBox(groupbox1).Canvas, Rect); Bitmap.SaveToFile(filename); //irgendetwas.bmp ... Bitmap.free; |
AW: teechartgrafik in groupbox speichern
Zitat:
Delphi-Quellcode:
BitBlt(GroupBox1.Canvas.Handle, 0, 0, Bitmap.Width, Bitmap.Height, Bitmap.Canvas.Handle,
0, 0, SrcCopy); |
AW: teechartgrafik in groupbox speichern
Zitat:
|
AW: teechartgrafik in groupbox speichern
Ab keiner. Einfach Klassenhelfer machen (siehe oben) und gut ist ;-)
|
AW: teechartgrafik in groupbox speichern
Zitat:
Aber: Eigentlich erwarte ich in einem Beispielcode eines Moderators schon entweder Code der funktioniert, oder der Hinweis, wie der Code zum funktionieren gebracht werden kann. So wie der Code da steht, wird jeder Anfänger verzweifeln, wenn er das Beispiel umsetzen möchte. |
AW: teechartgrafik in groupbox speichern
Offensichtliche Witze müssen also ab jetzt gekennzeichnet werden, Moderatoren haben gefälligst funktionierenen Code zu posten und du bist hier der Chef. Alles klar, Boß, dein Wunsch ist mir Befehl :P Vielleicht sollte man bei derartigen Ansprüchen einfach eine Gebühr einführen: Du willst funktionierenen Code? Kein Problem, was zahlst du? :lol:
Mit einer ausgeprägten Verzweiflungsneigung steht man sich beim Lernen selbst im Weg. Letztendlich kommt die Verzeiflung daher, daß man ohne Basiskenntnisse einfach drauflosklickt und die unbehandelte Verzeiflungsneigung dann sofort zuschlägt, wenn's nicht gleich auf Anhieb klappt. Anders ausgedrückt: Anfänger, denen man immer nur funktionierenden Code präsentiert, den sie nicht verstehen, lernen nichts dazu. Copy&Paste <> Umsetzen. Woher nur kommt diese ausufernde Anspruchshaltung? |
AW: teechartgrafik in groupbox speichern
Wir haben jetzt schon drei Leute die, im Kern, den selben Code posten. Hartfrid könnte sich darüber freuen. Wir könnten alle das schöne Wetter genießen. Stattdessen fangen wahrscheinlich wieder gleich alle an sich zu bewerfen. :|
|
AW: teechartgrafik in groupbox speichern
Zitat:
Ich fühle mich angegriffen von Dir und erwarte eine Entschuldigung! Grundsätzlich bin ich aber der Meinung, wer etwas Konstruktives zu einem Beitrag beisteuern kann soll dies auch tun, wer nicht bereit ist auf eine Frage einzugehen soll doch besser schweigen. Was ist falsch daran andere darauf hinzuweisen, dass ein Code nicht funktioniert? Nicht funktionieren kann ohne weiteres Grundwissen? Vorwürfe an konstruktive Teilnehmer im Forum, ist es wirklich das was du wolltest? |
AW: teechartgrafik in groupbox speichern
Sorry, ich habe dich nicht angegriffen, das ist dein subjektives Empfinden, entspricht jedoch nicht meiner Intention. Dennoch hattest du geschrieben:
Zitat:
Meiner Ansicht nach hat hier keiner einen Anspruch auf funktionierenden Code. Es gibt hier nicht einmal einen Anspruch darauf, daß Anfragen beantwortet werden. Wenn du der Meinung bist, du müßtest den gepostesten Code eines Users korrigieren, damit er funktioniert, steht dir das jederzeit frei. Hier zeigst du ganz eindeutig eine Überreaktion :-D Des weiteren habe ich auf die Tatsache hingewiesen, daß gerade Anfänger durch Code, den sie lediglich in der Erwartung, er funktioniere auf Anhieb, kopieren, nicht wirklich etwas lernen. Das würde nämlich darauf hinauslaufen, daß die User hier einem Anfänger die Programmierarbeit abnehmen und für ihn das Programm schreiben. Diese Thematik wurde nicht nur in diesem Forum bereits bis zum Abwinken durchgekaut und sollte jedem, der hier bereits ein paar Jahre dabei ist, geläufig sein. Wieso du dich dadurch angegriffen fühlst, ist mir zwar ein Rätsel, aber letztendlich deine Sache – ich muß es nicht verstehen. Es ist aber wohl noch gestattet, sich über gewisse überzogene Ansprüche lustig zu machen. Auch wenn du hier im Grunde nicht wirklich der Boß bist, möchte ich dich darum bitten, mir weiterhin zu gestatten, hin und wieder eine Aussage in witziger Form zu kommentieren und nicht sofort alles auf dich zu beziehen. Wie gesagt kann ich hier keinen persönlichen Angriff erkennen und sehe daher auch keine Veranlassung, irgend eine erzwungene und damit geheuchelte Entschuldigung auszusprechen. Wieso schreibst du mir nicht einfach via PM, wodurch du dich nun so angegriffen gefühlt hast, sondern schreist* stattdessen hier das Forum zusammen? Dann können wir das nämlich in Ruhe klären und müssen damit nicht die User belästigen. * Fettschrift wird gewöhnlich als Schreien interpretiert, insbesondere dann, wenn damit ein Vorwurf formuliert wird. |
AW: teechartgrafik in groupbox speichern
So nicht mit mir Bye Bye Delphipraxis
|
AW: teechartgrafik in groupbox speichern
Zitat:
|
AW: teechartgrafik in groupbox speichern
an bernaber
danke so klapptshttp://www.delphipraxis.net/images/smilies/icon_biggrin.gif |
AW: teechartgrafik in groupbox speichern
Das Speichern der bitmap im selben Unterverzeichnis wie das Gesamtprojekt klappt mit:
procedure Tform31.Button1Click(Sender: TObject); var Bitmap: TBitmap; Rect: TRect; begin Rect.Left:= 0; Rect.Top:= 0; Rect.bottom:= groupbox1.Height; Rect.Right:= groupbox1.Width; Bitmap := TBitmap.Create; Bitmap.SetSize(Groupbox1.Width, Groupbox1.Height); Bitmap.Canvas.CopyRect(Rect,TNewGroupBox(groupbox1 ).Canvas, Rect); Bitmap.SaveToFile('123name.bmp'); Bitmap.Free; end; Wie manipuliere ich die Einstellung, dass ich zunächst einen freien Namen wähle und dann den Speicherort? In der vorliegenden Version wird beim Speichern einer 2. Grafik natürlich die Datei 123name.bmp überschrieben. |
AW: teechartgrafik in groupbox speichern
Dafür gibt es
![]() |
AW: teechartgrafik in groupbox speichern
Ja, das weiß ich ,
aber bei : procedure Tform31.SpeedButton2Click(Sender: TObject); var Bitmap: TBitmap; Rect: TRect; //speichert nicht obwohl name und ort frei gewählt wird begin savepicturedialog1.Execute; Rect.Left:= 0; Rect.Top:= 0; Rect.bottom:= groupbox1.Height; Rect.Right:= groupbox1.Width; Bitmap := TBitmap.Create; Bitmap.SetSize(Groupbox1.Width, Groupbox1.Height); Bitmap.Canvas.CopyRect(Rect,TNewGroupBox(groupbox1 ).Canvas, Rect); // Bitmap.SaveToFile('name123.bmp'); Bitmap.Free; savepicturedialog1.Free; end; kann ich zwar Namen und Ort definieren (und bmp als appendix), aber dort wird nicht gespeichert , warum auch immer?? Da muss noch etwas falsch sein |
AW: teechartgrafik in groupbox speichern
Mein lieber Hartfried, so ein bißchen was muß man hin & wieder auch selber programmieren. Schau dir doch einmal die Beispiele zu TSavePictureDialog an. Dann wirst du vielleicht bemerken, daß ein solcher Dialog auch abgebrochen werden kann, weshalb man selbigen gewöhnlich so verwendet:
Delphi-Quellcode:
Denn dabei, du wirst es vielleicht inzwischen bemerkt haben, handelt es sich um eine Function, die als Result einen Boolean zurückliefert. Wenn der Anwender den Dialog abbricht, wird False zurückgeliefert. Enthält das Property FileName einen gültigen Wert oder ist die Stringlist Files gefüllt, wird True zurückgegeben.
If SavePictureDialog1.Execute Then
Begin ... End; Nun mußt du aber auch das Property FileName in deinem Programm verwenden, denn wenn du einfach nur die Zeile mit dem SaveToFile auskommentierst, hast du dafür ja noch keinen Ersatz. Statt 'name123.bmp' nimmst du nun SavePictureDialog1.FileName, und schon funktioniert's mit dem Speichern. Steht übrigens alles in der Online-Hilfe, die ich hier noch einmal mit eigenen Worten ausführlichst wiedergebe. Und, Hartfried, setze doch bitte deine Codezeilen, die du hier postest, in Delphi-Tags. Am einfachsten erreichst du das, indem du deine Code-Zeilen im Foren-Editor mit der Maus markierst und dann auf den Delphi-Helm klickst. |
AW: teechartgrafik in groupbox speichern
Ja so klappts, danke.
PS:Meine online-hilfe funktioniert nicht, deshalb schwimme ich so sehr |
AW: teechartgrafik in groupbox speichern
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz