AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Image aus ImageComboBox in ein BlobField abspeichern
Thema durchsuchen
Ansicht
Themen-Optionen

Image aus ImageComboBox in ein BlobField abspeichern

Ein Thema von AirJordan · begonnen am 4. Dez 2005 · letzter Beitrag vom 7. Dez 2005
Antwort Antwort
Benutzerbild von AirJordan
AirJordan

Registriert seit: 29. Mär 2005
Ort: Hamburg
214 Beiträge
 
Delphi 7 Enterprise
 
#1

Image aus ImageComboBox in ein BlobField abspeichern

  Alt 4. Dez 2005, 22:01
Datenbank: AbsoluteDatabase • Version: 4.89 • Zugriff über: AbsoluteDatabase Komponenten
Hallo

ich habe zu meiner Frage hier im Forum leider nicht die passende Antwort gefunden. Es gab zwar schon viele Tipps
und Tricks zu diesem Thema, aber für mein "Fall" konnte ich nichts passendes finden.

Eines vorweg, ich möchte diesen Teil in meinem Programm genau so mit den Komponenten lösen. Ich habe hier viele
andere Lösungsansätze gefunden, die aber bei mir so nicht funktionieren.

Zu dem Problem:

Ich habe in einer TImageComboBox (DevExpress) eine Liste mit Farbelementen vorgegeben. Jeder Einrag in der Liste
besteht aus dem Image, einem Text wie die Farbe heißt und einem Value (Word) der die Verbindung zu einer ImageList
hält.

Wird jetzt in einem Dialog eine Farbe ausgewählt, soll aufgrund der Auswahl mit GetBitmap und dem Bildindex aus
der ImageList die Grafik geholt werden und in dem BlobField abgespeichert werden. Die Lösungen die ich hier ge-
funden habe, gingen immer über einen OpenPictureDialog oä. und haben dann die Daten in dem BlobField geschrieben.

Delphi-Quellcode:
ImageBlobStream := TABSBlobStream(tABSTable.CreateBlobStream(tABSTable.FieldByName('Farbcode'),bmWrite));
iFarbe := TBitmap.Create; { das einzelne Bild }

{ Farben ist die gesamte ImageList }
if Farben.GetBitmap(cxFarben.EditValue,iFarbe) then
begin
  iInsulinFarbe.SaveToStream( -> ???); { hier kann ja nicht das ImageBlobStream rein ... }
  ImageBlobStream.CopyFrom(-> ???, -> ???.SizeOf) { und das kann ich auch nicht nehmen, weil ich das Bitmap nicht
                                                  { in ein TStream bekomme }

end;
Seit ein paar Stunden merke ich, das ich mich im Kreis drehe. Hat von euch noch einer eine Idee, wie man das
Problem lösen kann?? Bin für jeden Tipp dankbar.
Holger
Georg Schramm über Lothar Dombrowski:
"Er krankt daran, dass die Leute in einer
schrecklichen Welt leben und lachen..."

_
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Image aus ImageComboBox in ein BlobField abspeichern

  Alt 5. Dez 2005, 06:46
Hallo,

ich kann das nicht testen, da ich die DevExpress Komponente nicht installiert habe, aber warum solltest du nicht in den ImageBlobStream schreiben können - vorausgesetzt du verwendest iFarbe statt iInsulinFarbe:

Delphi-Quellcode:
var
  bsFarbCode: TStream;
  bmFarbe: TBitmap;
  iImage: integer; // index of image in imageList
begin
  with tABSTable do
    bsFarbCode := CreateBlobStream(FieldByName('Farbcode'), bmWrite);
  bmFarbe := TBitmap.Create;
  iImage := cxFarben.EditValue; // musst du wissen, ob das okay ist
  if ilFarben.GetBitmap(iImage, bmFarbe) then
    bmFarbe.SaveToStream(bsFarbCode);
  bmFarbe.Free;
  bsFarbCode.Free;
end;
Vorweihnachtliche Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von AirJordan
AirJordan

Registriert seit: 29. Mär 2005
Ort: Hamburg
214 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Image aus ImageComboBox in ein BlobField abspeichern

  Alt 5. Dez 2005, 08:48
Danke an den vorweihnachtlich grüßenden Marabu!

Ich weiß nicht was ich da gestern Abend zusammengetippt habe, jedenfalls klappt es so wie
Marabu es beschrieben hat.

Dabei habe ich dann festgestellt , das in dem Grid die Daten nur angezeigt werden,
wenn das Grafikformat auf JPEG steht, also muss ich anstatt TBitmap JPEG nehmen, aber das
werde ich wohl noch hinbekommen. Hier im Forum standen zu diesem Thema ja genug Hinweise.

Ich habe mich wohl davon etwas verwirren lassen, das Absolute Database eine eigene Variante
vom TBlobStream nämlich TABSBlobStream hat. Naja egal, Exeptions tauchen auch nicht mehr auf
und es funzt (bis auf das Format)
Holger
Georg Schramm über Lothar Dombrowski:
"Er krankt daran, dass die Leute in einer
schrecklichen Welt leben und lachen..."

_
  Mit Zitat antworten Zitat
Benutzerbild von AirJordan
AirJordan

Registriert seit: 29. Mär 2005
Ort: Hamburg
214 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Image aus ImageComboBox in ein BlobField abspeichern

  Alt 5. Dez 2005, 16:26
Ich nochmal

Ich habe jetzt nur noch das Problem, das mein Bitmap, das ich später in ein JPEG umwandel,
nicht so ganz passend in dem BlobField im Grid angezeigt wird. Siehe Anhang.

Wie kann ich das Bild so stretchen, das es in das Rechteck (55x8) reinpasst???

Hier der Sourcecode aus dem Programm:

Delphi-Quellcode:
  [..]
  bsFarbCode := DIAInsuline.CreateBlobStream(FieldByName('Farbcode'), bmWrite);
  bmFarbeBMP := TBitmap.Create; { das temp. Bitmap }
  bmFarbeJPG := TJPegImage.Create; { das JPEG  }

  { Bild aus der Imageliste holen. Je nach Auswahl in der ComboBox }
  if InsulinFarben.GetBitmap(cxIW_ICBInsulinFarben.EditValue,bmFarbeBMP) then
  begin
    bmFarbeBMP.Width := 55; bmFarbeBMP.Height := 8;
    { Das wäre die Größe die im Grid angezeigt wird }
    bmFarbeJPG.Assign(bmFarbeBMP); { an das JPEG anhängen }
    bmFarbeJPG.SaveToStream(bsFarbCode); { und ab in den Stream }
  end;
  bmFarbeJPG.Free; { und zum Schluß raus aus dem Speicher }
  bmFarbeBMP.Free;
  bsFarbCode.Free;
  [..]
und im Anhang das Ergebnis. Ich möchte dass das ganze Rechteck mit der Farbe gefüllt
ist. Hat einer eine Idee?
Miniaturansicht angehängter Grafiken
insulinbitmap_152.jpg  
Holger
Georg Schramm über Lothar Dombrowski:
"Er krankt daran, dass die Leute in einer
schrecklichen Welt leben und lachen..."

_
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Image aus ImageComboBox in ein BlobField abspeichern

  Alt 5. Dez 2005, 18:40
Hallo Holger,

wenn du der Bitmap nachträglich neue Dimensionen verpasst, dann wird sie nicht automatisch skaliert. Zum Skalieren kannst du die Methode StretchDraw() von TCanvas oder die Windows API Funktion StretchBlt() verwenden. Eventuell hält deine JPEG Komponente eine entsprechende Methode zum Skalieren für dich bereit.

Unter uns - warum speicherst du nicht einfach den FarbCode in der Datenbank und malst das Rechteck zur Laufzeit mit der gewünschten Farbe an? Das Speichern einer Bitmap ist doch in deinem Anwendungsfall nicht wirklich notwendig - oder?

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von AirJordan
AirJordan

Registriert seit: 29. Mär 2005
Ort: Hamburg
214 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Image aus ImageComboBox in ein BlobField abspeichern

  Alt 5. Dez 2005, 19:03
Hallo Marabu,

unter uns gesagt: weil es zu einfach ist.

Nein, im Ernst. Diese Farbcodes der Insuline sind identisch mit denen auf der Verpackung. Ich bin
einfach zu faul diesen Farbcode in der Farbpalette rauszusuchen und zu vergleichen. Wir Diabetiker
erkennen damit eben auch an der Farbe die richtigen Patronen und Verpackungen.

Ich weiß keine sooooo dolle Begründung, aber deshalb habe ich mir die Bitmap´s bzw. JPEG aus dem
Netz kopiert und habe so exakt die richtigen Farben in meinem Programm.

Die JPEG Komponente ist die Delphi Standard Komponente. Da habe eine Möglichkeit zum Skalieren
nicht gefunden. Trotzdem danke für deine Hinweise, haben ja schon geholfen
Holger
Georg Schramm über Lothar Dombrowski:
"Er krankt daran, dass die Leute in einer
schrecklichen Welt leben und lachen..."

_
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Image aus ImageComboBox in ein BlobField abspeichern

  Alt 5. Dez 2005, 19:11
Mit einem Color-Picker kannst du sehr bequem den Code für eine beliebige Farbe bestimmen - einfach indem du den Cursor drauf hältst: klick

marabu
  Mit Zitat antworten Zitat
Benutzerbild von AirJordan
AirJordan

Registriert seit: 29. Mär 2005
Ort: Hamburg
214 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Image aus ImageComboBox in ein BlobField abspeichern

  Alt 7. Dez 2005, 08:11
Ok Marabu, ich werde den mal checken und dann ggf. die Struktur in der DB umstellen. Erstmal
danke für die Tipps. Werde, wenn das Projekt fertig ist, es hier mal einstellen. Auch wenn man
als Nicht-Diabetiker mit einigen Funktionen nichts anfangen kann, so hoffe ich doch das ich ein
paar Hinweise auf generelle Routinen bekommen kann.
Holger
Georg Schramm über Lothar Dombrowski:
"Er krankt daran, dass die Leute in einer
schrecklichen Welt leben und lachen..."

_
  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 04:37 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