![]() |
Delphi, Erfassung von Daten per StringGrid
Hallo an alle.
Ich habe ein kleines großes Problem. Es handelt sich um folgendes: Ich habe ein Projekt übernommen, um eine Veranstaltung zu retten und bräuchte dabei Hilfe, da ich kein Pro bin sondern es lediglich vor 2-3 Jahren mal in der Schule gelernt habe und ab und an mal kleinere Sachen wit TR mache um nicht alles zu verlernen. Nun geht es um folgendes Prinzip: Ich habe mehrere Edit-Felder, welche ich in eine StringGrid schreibe (soweit so gut das geschieht auch soweit am richtigen Ort). Nun kommt jedoch das erste Problem: Sobald ich neue Daten in die Edit-Felder tippe, soll er alles in die nächste Spalte schreiben, jedoch überschreibt er alle Zeilen wieder in der ersten Spalten. Ich hab einiges ausprobiert und alte Dokumente rausgekramt, jedoch find ich nichts was mir auf die schnelle hilft. Das zweite Problem ist folgendes: Ich habe ein Edit-Feld welches für die Startnummern verwendet wird, nun ist es so das alle Zahlen von 0-199 Blau, 200-499 Gelb und alles über 500 rot gefärbt werden soll. Die Schriftfarbe ändert sich auch (habs mal in einer ListBox probiert), jedoch sobald ich einen neuen Wert eintippe werden die die Blau/gelb waren nun rot. Ich hab da ein problem mit dem < und > anscheinend was ich wie folgt realisiert hatte begin if Startnummer.text <'200' then begin Listbox.font.color:= clblue; end; if startnummer.text >'199' and <'500' then begin Listbox.font.color:= clyellow end; end; vllt könnte mir darauf mal eine ne kleinen schupser geben, weil ich eine probeversion bis montag fertig haben muss um zu schauen ob es soweit klappt beim vorstellen oder nicht. |
AW: Delphi, Erfassung von Daten per StringGrid
Hallo,
zu Problem 1: Führe einen Zähler mit der bei einem Enter im Edit um eines hochgezählt wird. Diesen Zähler kannst Du dann verwenden um die Spalte zu adressieren. zu Problem 2: Du solltest bedenken, dass bei jedem refresh der Text neu gezeichnet wird. Er wird dann mit der zuletzt verwendeten Farbe gezeichnet. Abhilfe den Text im onDraw entsprechen der Nummern/Zeilen eine Farbe zuweisen. Grüße Klaus |
AW: Delphi, Erfassung von Daten per StringGrid
Mein Vorschlag wäre folgender :
Delphi-Quellcode:
var
StartNr : Integer; begin try StartNr := StrToInt(trim(Startnummer.text)); // Leerstellen rausnehmen und in Zahl umwandeln except StartNr := 0; end; if Startnr < 200 then begin Listbox.font.color:= clblue; end; if ((StartNr > 199) and (StartNr < 500)) then // auf Klammern achten begin Listbox.font.color:= clyellow; end; if StartNr > 599 then begin Listbox.font.color:= clred; end; |
AW: Delphi, Erfassung von Daten per StringGrid
der Vorschlag von Baumina tatsächlich zahlen zu verwenden ist sicher gut allerdings
wenn ich Deine Anforderungen lese: Zitat:
Listbox.font.color:= was die ganze Box umfärbt, eher in Richtung OnDrawItem ... Um mehr zu helfen erscheint mir das ganze als zu unklar... |
AW: Delphi, Erfassung von Daten per StringGrid
Erstmal danke für die kleinen Hilfestellungen.
@ baumina Egal wie und was ich dran drehe und ändere er färbt nur alles in der farbe, welche ich als erstes bei <200 nehme... und wozu dient dieses trim? Das sehe ich ehrlich zum ersten mal. @ Bummi doch es ist erstmal genau das was ich suche, es hat nämlich einen gewissen sinn das diese farblich in der listbox sein müssen, da ich diese später auslese und diese dann auf ein extra formular alles was vorher mal eingelesen wurde in labels oder edit feldern ausgelesen werden soll. Die Farbe gibt nämlich die vorgesehene Strecke an und dies dient dann zur schnelleren ermittlung des siegers auf der einzelnen strecke @ klaus soweit hab ich es ja auch verstanden, nur ich schaff es nicht zu realisieren... Naja wer noch was hat, kann es gerne posten, ich schaue mal ob ich ein Praxis Buch in der Zeit schaffe zu bekommen. |
AW: Delphi, Erfassung von Daten per StringGrid
Wie bummi schon sagt, ListBox.Font.Color setzt die Schriftfarbe für die komplette ListBox, deshalb ist das eben nicht das, was Du anscheinend suchst. Wie wäre es denn stattdessen mit so etwas:
![]() |
AW: Delphi, Erfassung von Daten per StringGrid
Guten Abend,
kannst Du mal ein Screenshot von Deinem Programm anhängen? Vielleicht sieht man ja dann welche Edits für welchen Zeilen/Spalten zuständig sind... Grüße Klaus |
AW: Delphi, Erfassung von Daten per StringGrid
Um einzelne Farben in einer StringGrid zu ändern, gehe ich folgendermaßen vor:
In der zugewiesenen Grid.OnDrawCell procedure:
Delphi-Quellcode:
Zu deiner Frage "wozu dient dieses trim" : Wie ich schon oben geschrieben habe : "Leerstellen rausnehmen". Die genaue Beschreibung dazu findest du in der Delphihilfe oder hier
Grid.Canvas.Brush.Color := clGreen; // optional : Hintergrundfarbe
Grid.Canvas.Font.Color := clRed; // optional : Schriftfarbe Grid.Canvas.FillRect(Rect); // Zelle mit Hintergrundfarbe füllen Rect.Left := Rect.Left + 2; Rect.Right := Rect.Right - 2; Rect.Top := Rect.Top + 2; Rect.Bottom := Rect.Bottom - 2; DrawText(Grid.Canvas.Handle, PChar(Grid.Cells[ACol,ARow]), StrLen(PChar(Grid.Cells[ACol,ARow])), Rect,DT_LEFT); // Text in Zelle schreiben ![]() |
AW: Delphi, Erfassung von Daten per StringGrid
Hey, ich bins wieder^^
Also das mit der Farbe habe ich nun bissl anders geregelt in einer StringGrid aber passt soweit. Mein Problem ist immernoch diese olle StringGrid^^ Ich schaffe es einfach nicht, das er bei jedem weiteren Eintrag eine Spalte tiefer schreibt und dann in die richtigen Zeilen (die Zeilen sind nciht das prob, ich schaffe es nicht in eine weitere Spalte automatisch eintragen zu lassen) Nun ist ein weiteres Problem aufgetreten: Anhand des Geburtsjahres wird die Altersklasse festgelegt (soweit klappt es), jedoch muss ich nun noch beachten das der 28.04.2014 der Stichtag für die altersklassen ist. Nun habe ich es mit den Jahreszahlen wie folgt geregelt: Zitat:
Wie muss ich es nun verschachteln, damit er den 28.04.2014 als Stichtag nimmt? Edit4 steht für den Tag, Edit5 für Monat und Edit6 ist in dem Fall wie Ihr sehen könnt für's Jahr Hoffe Ihr seht durch, wenn nicht muss ich es nachher neu formulieren wenn ich zurück bin. Und danke nochmal für die bisherigen Hilfestellungen =) |
AW: Delphi, Erfassung von Daten per StringGrid
Hallo,
Zitat:
Zitat:
Zitat:
Ein
Delphi-Quellcode:
gibt Dir hier 38 aus.
ShowMessage (IntToStr (YearsBetween (EncodeDate (2014, 2, 28), EncodeDate (1975, 4, 1))))
Damit könntest Du z. B. mit:
Delphi-Quellcode:
die entsprechenden Inhalte füllen - wobei Date1 = Stichtag, Date2 = EncodeDate (mit den Daten aus den Eingabefeldern)
case YearsBetween (Date1, Date2) of
30..34 : s := '30-34'; 35..39 : s := '35-39'; 40..44 : s := '40-44'; end; StringGrid1.Cells [ACol, ARow] := s + ' Jahre' Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 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