![]() |
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:
Liebe Grüße
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; |
AW: aus Datenbank Datum ein image.left zuweisen
Hallo, was sagt denn der Compiler dazu?
|
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. |
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; |
AW: aus Datenbank Datum ein image.left zuweisen
Zitat:
1.
Delphi-Quellcode:
= keine lokale Schleifenvariable
j1
2. globale Variablen/ Arrays, wo sind die Deklarationen? 3.
Delphi-Quellcode:
-> niemals mehrere "Befehle" in eine Zeile :warn:
D := Tag1[D]; E := Stunden[E];
4.
Delphi-Quellcode:
-> bitte with abkündigen
with simage do begin
Das Problem.
Delphi-Quellcode:
=
left := Kalenderimage.left + 2020-11-01 := Tag1[1];
Variable := Variable + Variable := Array[1] -> siehst du es? :wink: 6.
Delphi-Quellcode:
falsche Stringverkettung
left := Kalenderimage.left + 2020-11-01 := Tag1[1];
Bitte durcharbeiten: :thumb: ![]() @TiGü: Es fehlen ihm die Grundlagen. Bei so vielen Fehlern ist er mit deinem Code überfordert.:? |
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
|
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.
|
AW: aus Datenbank Datum ein image.left zuweisen
|
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 01:31 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-2025 by Thomas Breitkreuz