AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Stringgrid Spalte beim Markieren mit Zeitwerten füllen
Thema durchsuchen
Ansicht
Themen-Optionen

Stringgrid Spalte beim Markieren mit Zeitwerten füllen

Ein Thema von needatip · begonnen am 3. Mär 2016
Antwort Antwort
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#1

Stringgrid Spalte beim Markieren mit Zeitwerten füllen

  Alt 3. Mär 2016, 16:56
Hallo, ich bastel grad an einem Stringgrid bei dem ich direkt beim Markieren einer leeren Spalte jeweils die Minutenwerte aus einer anderen Spalte addiert möchte.
Ich hab auf einem Formular einen DateTimePicker und ein Stringgrid mit ca. 1000 Zeilen und 2 Spalten
Die linke Spalte ist leer und rechts davon habe ich eine Spalte mit unterschiedlichen Zahlen(Minutenwerte) von 1 bis 10.
Ich möchte nun mit der Maus oder per Tastatur einen Bereich in der leeren Spalte markieren.
Es soll nun ab Beginn der Markierung bis zu einer bestimmten Zeile die Zeit des DateTimePickers plus der in der rechten Spalte entsprechende Minutenwert hinzuaddiert und eingetragen werden.
(ähnlich wie in Excel)
Dabei soll der Zeitwert der nächsten Reihe natürlich um den Minutenwert der rechten Spalte erhöht werden.


DateTimePicker hat das Datum/Zeit : 03.03.2016 - 09:00


Tabelle vor dem Markieren der leeren Spalte
STARTZEITMINUTEN
 2
 1
 4
 5
 3
 4
 2

Nach dem Markieren der leeren Spalte soll der fertige Stringgrid dann etwa so aussehen:

STARTZEITMINUTEN
03.03.2016 09:022
03.03.2016 09:031
03.03.2016 09:074
03.03.2016 09:125
03.03.2016 09:153
03.03.2016 09:194
03.03.2016 09:212


Hab folgendes bereits geschrieben. Ist aber noch nicht das gelbe vom Ei

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  i: integer;
const
  ZufallMinuten = 5;
begin
  sg1.Cells[0, 0] := 'Startzeit';
  sg1.Cells[1, 0] := 'Minuten';
  Randomize;
  for i := 1 to sg1.RowCount - 1 do
    sg1.Cells[1, i] := IntToStr(Random(ZufallMinuten) + 1); // zufällige Minutenzahl zwischen 1 und 5 für Spalte Minuten

end;

procedure TForm1.sg1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
const
  SelectedColor = clyellow;
begin
  if (state = [gdSelected]) then
    with TStringGrid(Sender), Canvas do
    begin
      Brush.Color := SelectedColor;
      FillRect(Rect);
      TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Cells[ACol, ARow]);
      sg1.Cells[Acol, ARow] := DateTimeToStr(IncMinute(StrToDateTime(sg1.Cells[ACol, ARow - 1]),StrToInt(sg1.Cells[ACol+1,ARow])));

    end;
end;

procedure TForm1.sg1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
begin
  sg1.Cells[Acol, ARow] := DateTimeToStr(DateTimePicker1.DateTime); //Erste Markierungszeile mit DateTime füllen
end;
Für ein paar Verbesserungen wäre ich dankbar.
  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 06:42 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