AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

if Anweisung zur Laufzeit ändern?

Ein Thema von Alterauge · begonnen am 13. Sep 2012 · letzter Beitrag vom 13. Sep 2012
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: if Anweisung zur Laufzeit ändern?

  Alt 13. Sep 2012, 10:46
Na wenn die Einsatznummer neu erstellt wurde, dann hast Du doch die Einsatznummern...

Mavarik
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: if Anweisung zur Laufzeit ändern?

  Alt 13. Sep 2012, 10:51
Zitat:
Achja. Da wert ja ein String ist, dann nimm doch auch ...FieldByName("blub").AsString
Warum sollte man den String zuerst in einen String konvertieren? .as<Typ> ist ein Cast und deshalb überflüssig!
Markus Kinzler
  Mit Zitat antworten Zitat
Alterauge

Registriert seit: 4. Mär 2011
306 Beiträge
 
Delphi 2010 Professional
 
#3

AW: if Anweisung zur Laufzeit ändern?

  Alt 13. Sep 2012, 10:52
Ist bestimmt ganz einfach!
Ich denke nur zu kompliziert!

Ach hier die Einfärbung rot!
Delphi-Quellcode:

procedure TForm1.CRDBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
   var
  i : Integer;
  Wert: string;
 begin
  if (CRDBGrid1.DataSource.DataSet.RecordCount = 0) then
     Exit;
   Wert := CRDBGrid1.DataSource.DataSet.FieldByName('Zuordnung').Value;
   if Wert = 'ausgerücktthen begin
    CRDBGrid1.Canvas.Brush.Color := clred;
     CRDBGrid1.Canvas.Font.Color := clblack;
       end else
    if Wert = '0 Eingangthen begin
     CRDBGrid1.Canvas.Brush.Color := clyellow;
     CRDBGrid1.Canvas.Font.Color := clblack;
    end else
    if Wert = 'Bearbeitungthen begin
     CRDBGrid1.Canvas.Brush.Color := clFuchsia;
     CRDBGrid1.Canvas.Font.Color := clblack;
     end else
       if Wert = 'Vor Ort beendetthen begin
     CRDBGrid1.Canvas.Brush.Color := cllime;
     CRDBGrid1.Canvas.Font.Color := clblack;
   end else begin
  
    end;
   CRDBGRid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
begin
   CRDBGRid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
        if (gdSelected in State) then
     begin
            // Form1.CRDBGrid1.Canvas.Brush.Color := clSilver;
            // Form1.CRDBGrid1.Canvas.Font.Color:=clblack;
        end;
     form1.crDBGrid1.Canvas.FillRect(Rect);
     form1.crDBGrid1.Canvas.TextOut(Rect.Left + 2, Rect.Top + 1, Column.Field.AsString);

begin
  with MyTable1 do
    for i := 5 to Pred(Fields.Count) do
      Fields[i].DisplayWidth := 255;
end;
end;
end;
__________________________________________________ __________________________________________________ ___

Die Einsatznummer wird abgeholt, aus einem Memo!
Delphi-Quellcode:
procedure TForm1.AdvGlowButton28Click(Sender: TObject);
begin
DBEdit9.Text := Copy(DBMemo3.Text, Length(DBMemo3.Text)-9, 10);
end;

Geändert von Alterauge (13. Sep 2012 um 10:56 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: if Anweisung zur Laufzeit ändern?

  Alt 13. Sep 2012, 11:02
Duz sagst immer du willst etwas Lernen, berücksichtigst aber nicht die einfachsten Tipps. Zu wurdest schon öfterst ( eigentlich bei jeder deiner Fragen) auf die Bedeutung des Parameters Sender hingeweisen und das dieser der Verwendung einer festen Objektreferenz vorzuziehen ist. Trotzdem verendest du das jedesmal wieder ( CRDBGrid1)!

Kommen weitere Werte hinzu und soll dann auf diese Werte später besonderst reagiert werden, dann nomalisiere diese in der Datenbank und lege dort auch das Verhalten ab.

Z.B. Tabelle Zuordnung (oder Phase)

ID Bez Hintergrund Schrift
1 'ausgerückt' #FF0000 #000000
0 '0 Eingang' ...

In der abgefragten Tabelle dann statt dem Text die ID auf die Zuordnungstabelle (FK) und bei der Abfrage die Farben hinzujoinen
Zitat:
Tu dir selbst einen Gefallen, und benenne deine Controls vernünftig. Das ist ja grausig so!
Das ist auch eine Sache, die man ihm in jedem seiner Fragen sagt.
Markus Kinzler
  Mit Zitat antworten Zitat
Alterauge

Registriert seit: 4. Mär 2011
306 Beiträge
 
Delphi 2010 Professional
 
#5

AW: if Anweisung zur Laufzeit ändern?

  Alt 13. Sep 2012, 11:29
OK, bin ein wenig schlampig!

Auch wenn es nervig ist, noch eine Zwischenfrage!

Was ist hier falsch?
Delphi-Quellcode:
procedure TForm1.Timer6Timer(Sender: TObject);
begin
if (MyTAble1.FieldByName('Einsatznummer').Value) = (MyTAble3.FieldByName('Einsatznummer').Value) then begin
  ShowMessage('Test');
end;
end;
Frage:
Ist die Einsatznummer aus DB1 = wie Einsatznummer DB2 dann ShowMessage!
Keine Fehlermeldung Quelltext sauber! geht aber nicht?

Geändert von Alterauge (13. Sep 2012 um 11:33 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#6

AW: if Anweisung zur Laufzeit ändern?

  Alt 13. Sep 2012, 11:31
...Fehlermeldung/Was passiert (nicht)? Sag mal, so neu bist du doch hier nicht, dass man dir noch das Fragen beibringen muss oder?
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: if Anweisung zur Laufzeit ändern?

  Alt 13. Sep 2012, 11:39
Vielleicht Leerzeichen in den Feldern?
Delphi-Quellcode:
if Trim(MyTAble1.FieldByName('Einsatznummer').Value) = Trim(MyTAble3.FieldByName('Einsatznummer').Value) then
begin
  ShowMessage('Test');
end;
Markus Kinzler
  Mit Zitat antworten Zitat
Alterauge

Registriert seit: 4. Mär 2011
306 Beiträge
 
Delphi 2010 Professional
 
#8

AW: if Anweisung zur Laufzeit ändern?

  Alt 13. Sep 2012, 11:40
Geht jetzt! Ich Blödmann

Delphi-Quellcode:
[DELPHI]
procedure TForm1.Timer6Timer(Sender: TObject);
begin
if (MyTAble1.FieldByName('Einsatznummer').Text) = (MyTAble3.FieldByName('Einsatznummer').Text) then begin
  ShowMessage('Test');
end;
end;
[/DELPHI]
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: if Anweisung zur Laufzeit ändern?

  Alt 13. Sep 2012, 11:53
Delphi-Quellcode:
if Wert = 'ausgerücktthen begin
if Wert = '0 Eingangthen begin
if Wert = 'Bearbeitungthen begin
if Wert = 'Vor Ort beendetthen begin
Es wäre etwas sicherer statt dieser String-Werte, etwas numerisches zu nutzen.
Falls es z.B. eine Ländercodedifferenz zwischen DB und Client geben sollte, könnte da nur noch datentechnischer Hackepeter übrig bleiben.
ob Mkinzler's Vorschlag der optimale ist, darüber mag man diskutieren. Aber das Prinzip ist richtig, und das solltest Du tunlichst beherzigen, auch wenn Du "etwas schlampig" bist.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

AW: if Anweisung zur Laufzeit ändern?

  Alt 13. Sep 2012, 10:55
Und was ist wenn mehrere Einsatzfahrzeuge zur gleichen Zeit ausgerückt sind?
Dann sollten doch alle rot markiert werden, oder nicht?
Somit wäre schon der Ansatz die Einsatznummer abzufragen falsch.
Du musst schlichtweg den Status des Fahrzeugs abfragen um den Datensatz im DBGrid die gewünschte Farbe zu geben.

Ausserdem hast du zu wenig Statuswerte.
Ein Einsatzfahrzeug kann auch "verunfallt" sein.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 07:07 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