AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein teechartgrafik in groupbox speichern
Thema durchsuchen
Ansicht
Themen-Optionen

teechartgrafik in groupbox speichern

Ein Thema von Hartfrid Krause · begonnen am 22. Mai 2015 · letzter Beitrag vom 22. Mai 2015
Antwort Antwort
Seite 2 von 3     12 3      
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#11

AW: teechartgrafik in groupbox speichern

  Alt 22. Mai 2015, 14:37
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:
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;
Der Button2 sagt
Delphi-Quellcode:
procedure TForm15.Button2Click(Sender: TObject);
begin
   GroupBox1.SaveToFile('x:\myGroupbox.bmp);
end;
. Was dabei herauskommt siehst du im Anhang. Ist doch richtig so, oder?
Miniaturansicht angehängter Grafiken
form15_2015-05-22_14-30-40.png  
Angehängte Grafiken
Dateityp: jpg myGroupbox.jpg (10,3 KB, 2x aufgerufen)
  Mit Zitat antworten Zitat
bernerbaer
(Gast)

n/a Beiträge
 
#12

AW: teechartgrafik in groupbox speichern

  Alt 22. Mai 2015, 14:42
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:
type TNewGroupBox = class(TGroupBox)
  public
    property Canvas;
  end;
2. Jetzt sollte das Speichern der Groupbox als Bild eigentlich keine Probleme mehr darstellen:

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;

Geändert von bernerbaer (22. Mai 2015 um 14:45 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: teechartgrafik in groupbox speichern

  Alt 22. Mai 2015, 14:50
Das sieht ja ganz gut aus, aber der Befehl PaintToCanvas wird bei mir nicht übernommen.
Delphi-Quellcode:
BitBlt(GroupBox1.Canvas.Handle, 0, 0, Bitmap.Width, Bitmap.Height, Bitmap.Canvas.Handle,
    0, 0, SrcCopy);
Markus Kinzler
  Mit Zitat antworten Zitat
bernerbaer
(Gast)

n/a Beiträge
 
#14

AW: teechartgrafik in groupbox speichern

  Alt 22. Mai 2015, 14:58
Delphi-Quellcode:
BitBlt(GroupBox1.Canvas.Handle, 0, 0, Bitmap.Width, Bitmap.Height, Bitmap.Canvas.Handle,
    0, 0, SrcCopy);
Ab welcher Delphiversion ist das Canvas bei der Groupbox public?
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#15

AW: teechartgrafik in groupbox speichern

  Alt 22. Mai 2015, 15:33
Ab keiner. Einfach Klassenhelfer machen (siehe oben) und gut ist
  Mit Zitat antworten Zitat
bernerbaer
(Gast)

n/a Beiträge
 
#16

AW: teechartgrafik in groupbox speichern

  Alt 22. Mai 2015, 15:36
Ab keiner. Einfach Klassenhelfer machen (siehe oben) und gut ist
Das habe ich ja in meinem Beispiel auch gemacht.

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.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#17

AW: teechartgrafik in groupbox speichern

  Alt 22. Mai 2015, 15:52
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 Vielleicht sollte man bei derartigen Ansprüchen einfach eine Gebühr einführen: Du willst funktionierenen Code? Kein Problem, was zahlst du?

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?

Geändert von Perlsau (22. Mai 2015 um 15:57 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#18

AW: teechartgrafik in groupbox speichern

  Alt 22. Mai 2015, 16:05
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.
  Mit Zitat antworten Zitat
bernerbaer
(Gast)

n/a Beiträge
 
#19

AW: teechartgrafik in groupbox speichern

  Alt 22. Mai 2015, 16:08
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 Vielleicht sollte man bei derartigen Ansprüchen einfach eine Gebühr einführen: Du willst funktionierenen Code? Kein Problem, was zahlst du?

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?
Sorry! Was für ein Teufel hat dich geritten? Ich will hier gar nichts, ich habe ein funktionierendes Beispiel auf eine gestellte Frage vorgelegt und darauf hingewiesen, dass der Code des Moderators (mindestens mit meiner Delhiversion) nicht funktionieren wird.

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?

Geändert von bernerbaer (22. Mai 2015 um 16:20 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#20

AW: teechartgrafik in groupbox speichern

  Alt 22. Mai 2015, 16:48
Sorry, ich habe dich nicht angegriffen, das ist dein subjektives Empfinden, entspricht jedoch nicht meiner Intention. Dennoch hattest du geschrieben:

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.
Das empfand ich als unverschämt und habe daher mein Empfinden auf lustige und nicht ganz ernstzunehmende Weise (man beachte die Smilys) zum Ausdruck gebracht. Dasselbe gilt auch für den obigen Hinweis mit dem GroupBox.SaveToFile. Das war ganz eindeutig ein Witz, der TE hätte spätestens beim Eintippen erkennen müssen, daß es diesen Befehl nicht gibt und er selbst etwas programmieren muß, um sein Ziel zu erreichen. Einige hatten den Witz sofort verstanden, andere vermutlich nicht.

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

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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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