Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   aus Datenbank Datum ein image.left zuweisen (https://www.delphipraxis.net/209706-aus-datenbank-datum-ein-image-left-zuweisen.html)

Nine9 12. Jan 2022 09:05

aus Datenbank Datum ein image.left zuweisen
 
Guten Tag Delphi Gurus,

ich habe ein Image indem jeder Tag des Jahres gezeichnet wurde. berechnet habe ich dies mit image.width / 365 . Natürlich mit Trunc abgeschnitten damit sich das auch zeichnen lässt.

Nun habe ich jede position von image.width / 365 * 1 usw... mit einem Array gespeichert.
Jetzt möchte ich aus einer Datenbank aus einer Tabelle ein Datum heraus nehmen und ein Image auf das Image als Auftrag Zeichnen.
Das Datum dafür sollte left sein, daher muss ich jedes Datum für jede gespeicherte Array pixel Position zuweisen.

ich habe das noch nie gemacht daher bitte ich um Hilfe ich weis leider nicht weiter und google bietet mir momentan zu wenig oder ich suche falsch.

Delphi-Quellcode:
procedure TKalender.FormCreate(Sender: TObject);
begin

 FDQuery1.Open;

  D := Tag1[D]; E := Stunden[E];


  for j1 := 1 to 365 do
    begin
       Tag1[D] := trunc(KalenderImage.Width / 365 *j1);
       D:= D+1;
    end;


  if fdquery1.FieldByName('START').Calculated then
  begin
              simage := Timage.create(self);
              with simage do begin      // weist man so die werte zu?
                left := Kalenderimage.left + 2020-11-01 := Tag1[1];
                       2020-11-02 := Tag1[2]; 2020-11-03 := Tag1[3];
                        2020-11-04 := Tag1[4];
              end;

  end;
Liebe Grüße

Sinspin 12. Jan 2022 09:59

AW: aus Datenbank Datum ein image.left zuweisen
 
Hallo, was sagt denn der Compiler dazu?

Nine9 12. Jan 2022 10:11

AW: aus Datenbank Datum ein image.left zuweisen
 
Das er der Linken Seite (z.b 2020-01-01 ) nichts zuweisen kann..

Ich weis nicht wie das überhaupt geht vll hast du das mal in einer anderen Form mal gemacht.

TiGü 12. Jan 2022 10:58

AW: aus Datenbank Datum ein image.left zuweisen
 
Die auskommentierten FDQuery1-Zugriffe müsstest du noch wieder einkommentieren

Delphi-Quellcode:
// muss in die Uses-Klausel
uses
   System.Math, System.UiTypes

...

procedure TKalender.FormCreate(Sender: TObject);
var
  d: Integer;
  Tag1: array[1..365] of Integer; //TArray<Integer>;
  simage: TImage;
  Colors: TArray<TColor>;
begin

//  FDQuery1.Open;

  for d := 1 to 365 do
  begin
    Tag1[d] := Trunc(Kalenderimage.Width / 365 * d);
  end;

//  if FDQuery1.FieldByName('START').Calculated then
  begin
    Colors := [TColors.Red, TColors.Dodgerblue, TColors.Floralwhite, TColors.Olive, TColors.Sandybrown];
    for d := 1 to 365 do
    begin
      simage := TImage.create(Self);
      simage.Parent := Self;
      simage.Left := Kalenderimage.Left + Tag1[d];
      simage.Height := Kalenderimage.Height;
      simage.Width := Trunc(Kalenderimage.Width / 365);

      // Mit zufälliger Farbe ausfüllen, damit sieht, dass es 365 verschiedene Images sind:
      simage.Canvas.Brush.Color := Colors[RandomRange(Low(Colors), High(Colors))];
      simage.Canvas.FillRect(simage.ClientRect);
    end;

  end;
end;

haentschman 12. Jan 2022 11:00

AW: aus Datenbank Datum ein image.left zuweisen
 
Zitat:

Das er der Linken Seite (z.b 2020-01-01 ) nichts zuweisen kann.
...das kann aber nicht alles sein. :wink:

1.
Delphi-Quellcode:
j1
= keine lokale Schleifenvariable
2.
globale Variablen/ Arrays, wo sind die Deklarationen?
3.
Delphi-Quellcode:
D := Tag1[D]; E := Stunden[E];
-> niemals mehrere "Befehle" in eine Zeile :warn:
4.
Delphi-Quellcode:
with simage do begin
-> bitte with abkündigen
Das Problem.
Delphi-Quellcode:
left := Kalenderimage.left + 2020-11-01 := Tag1[1];
=
Variable := Variable + Variable := Array[1] -> siehst du es? :wink:
6.
Delphi-Quellcode:
left := Kalenderimage.left + 2020-11-01 := Tag1[1];
falsche Stringverkettung

Bitte durcharbeiten: :thumb:
https://www.delphi-treff.de/tutorial...phi-crashkurs/

@TiGü:
Es fehlen ihm die Grundlagen. Bei so vielen Fehlern ist er mit deinem Code überfordert.:?

Sinspin 12. Jan 2022 11:08

AW: aus Datenbank Datum ein image.left zuweisen
 
Wenn Du bis Gestern nur Kreise gemalt hast. Und ab Heute auch Rechtecke malen sollst, machst Du zwar was total neues, aber doch nichts wofür Du einen total neuen Weg gehen musst. Du, kannst einfach den bestehenden Weg anpassen.

Ich denke, was dir fehlt, ist wie Du ein Datum zerlegen kannst um an die Tage, Monate und Jahre zu kommen.
Das macht man mit
Delphi-Quellcode:
SysUtils.DecodeDate

DP-Maintenance 13. Jan 2022 09:01

Dieses Thema wurde am "13. Jan 2022, 10:01 Uhr" von "Daniel" aus dem Forum "Neuen Beitrag zur Code-Library hinzufügen" in das Forum "Datenbanken" verschoben.

himitsu 13. Jan 2022 09:39

AW: aus Datenbank Datum ein image.left zuweisen
 
Warum will hier eigentlich jemand ein "Datum" zu einer Position dazurechnen?
Und was um Himmels Willen soll dabei überhaupt rauskommen?


Vermutung: TextWidthTextWidth / Delphi-Referenz durchsuchenTextWidth / Hier im Forum suchenTextWidth

Blup 13. Jan 2022 16:22

AW: aus Datenbank Datum ein image.left zuweisen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Mit Datenbanken hat das Thema eigentlich wenig zu tun.
Es geht doch eher darum einen Kalender zu zeichnen.

Im Anhang wenig Code der zumindest erst mal funktioniert, an der optischen Gestaltung kann man noch arbeiten ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:18 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