![]() |
Datenbank: Paradox • Version: 7 • Zugriff über: Table
TField "Sperren"?
Hallo,
ich habe eine Tabelle mit drei Feldern, Feld[0] = Wochentag(String) Feld[1] = Datum(TDateTime) Feld[2] = Uhrzeit(TDateTime) Jetzt möchte ich, das wenn in Feld[0] z.B. 'Unbestimmt' drin steht, dass mir die anderen beiden Felder nicht angezeigt werden, auch nicht wenn da jeweils ein Datum, bzw. eine Uhrzeit drin steht. Gibt es da ne Möglicheit, dass man IsNull "setzt", obwohl ein Wert drin steht? MfG :angel: EDIT: Die Werte sollen in TDBEdits angezeigt werden.(=> Visible = False bringt nichts) |
Re: TField "Sperren"?
Zitat:
mach es mit zwei normalen TEdits. Das Lesen und Schreiben der beiden Felder musst Du dann von Hand machen. |
Re: TField "Sperren"?
Ich habs jetzt so gemacht, das ich das "DataField" auf '' bzw. 'Feldname' setze.
|
Re: TField "Sperren"?
Alternativ hättest du mit dem Ereignis OnGetText() des Tabellenfeldes arbeiten können.
Grüße vom marabu |
Re: TField "Sperren"?
@marabu :
ich weis jetzt nicht ob das dass ist was ich suche, scheint kompliziert zu sein. Ich meine, auch wenn z.B.
Delphi-Quellcode:
soll, wenn
FieldByName('Datum').AsString = '01.01.2005'
Delphi-Quellcode:
aber die Daten sollen gleichzeitig nicht in der Tabelle verändert werden.d.h. es soll einfach ein NULL Wert ausgegeben werden.
FieldByName('Wochentag').asstring = 'Unbestimmt'
FieldByName('Datum').AsString:=''; |
Re: TField "Sperren"?
Zitat:
Kleine while-not-eof-Procedure die einfach die entsprechenden Felder leer lässt. |
Re: TField "Sperren"?
Kompliziert ist das sicher nicht.
Delphi-Quellcode:
Wenn du jetzt noch verhindern willst, dass der Benutzer Eingaben in Datum macht, dann kannst du die property ReadOnly des Feldes kontrollieren:
procedure TDataForm.TableDatumGetText(Sender: TField;
var Text: String; DisplayText: Boolean); begin if Lowecase(Sender.DataSet.FieldByName('Wochentag').AsString) = 'unbestimmt' then Text := '' else Text := Sender.AsString; end;
Delphi-Quellcode:
Hoffentlich habe ich nicht zu viele Fehler reingebaut...
procedure TDataForm.DataSourceDataChange(Sender: TObject; Field: TField);
begin if not Assigned(Field) or (Lowercase(Field.FieldName) = 'wochentag') then with Field.DataSet.FieldByName('Datum') do ReadOnly := (Lowercase(Field.FieldName) = 'wochentag') and (Lowercase(Field.AsString) = 'unbestimmt'); end; Grüße vom marabu |
Re: TField "Sperren"?
Hmm... mein Prob ist mom noch das die Tabelle in einem Thread ist und ich die ereignisse zur Laufzeit zuwesen muss.. ist normalerweise kein Problem aber irgendwie funzt das nicht richtig:
Delphi-Quellcode:
Weis jemand wo da mein Fehler ist?
.
. TDataSet(FTable).AfterOpen:=FTableAfterOpen; . . procedure TWVThread.OnDatumGetText(Sender: TField; var Text: string; DisplayText: Boolean); begin if Sender.DataSet.FieldByName('WV_Wochentag').AsString = 'Unbestimmt' then Text:='' else Text:= Sender.AsString; end; {******************************************************************************} procedure TWVThread.OnUhrzeitGetText(Sender: TField; var Text: string; DisplayText: Boolean); begin if Sender.AsString = '23:59:59' then Text:='' else Text:= Sender.AsString; end; {******************************************************************************} procedure TWVThread.FTableAfterOpen(DataSet: TDataSet); begin FTable.FieldByName('WV_Datum').OnGetText:=OnDatumGetText; FTable.FieldByName('WV_Uhrzeit').OnGetText:=OnUhrzeitGetText; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 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