| Delphi Tips & Tricks | softsale > Delphi Tips & Tricks |
| < poprzednia rada | następna rada > |
Edytor pól w trybie run-timeCzęsto zdarza się, że należy zmienić np. długość pola w bazie, z której korzystamy w aplikacji. Jeżeli korzystaliśmy z edytora pól, wtedy próba uruchomienia "chodzącej" dotąd naszej aplikacji spotka się z nieprzyjemnym i nie do końca zrozumiałym komunikatem o błędzie "Field nazwa_pola is not of the expected type". Rozwiązaniem w tym momencie jest usunięcie z edytora pól pola, którego długość uległa zmianie i powtórne jego dopisanie i ponowna kompilacja. Jak uniknąć tego kłopotliwego rozwiązania, zmuszającego nas do powtórnej kompilacji i instalacji aplikacji? Jeżeli na etapie projektowania wybierzemy te pola, które w przyszłości będą miały zmienianą np. długość, to, za pomocą procedury podanej niżej, można przypisać długości danego pola aktualną długość pola z tablicy przed otwarciem tej tablicy. var tt :TdataSet;
procedure Koryguj_pole(DataSet: TDataSet);
var
numer_pola,poz_def: Integer;
// poz_def - określa pozycję definicji pola
// na podstawie nazwy pola,
// patrz dalej - poz_def:=FieldDefs.IndexOf(FieldName);
begin
with DataSet do
begin
if Active then Close;
FieldDefs.Update;
{szukaj wszystkich predefiniowanych
{TField w DataSet.FieldDefs}
for numer_pola:= FieldCount-1 downto 0 do
with Fields[numer_pola] do
begin
poz_def := FieldDefs.IndexOf(FieldName);
// wywołaj wyjątek jeśli nie ma pola o danej nazwie
if poz_def < 0 then
raise Exception.CreateFmt( 'Pola o nazwie "%s" nie
ma w tablicy o nazwie "%s"',
[FieldName,Dataset.Name]);
{przypisz poprawną długość pola}
Size := FieldDefs[poz_def].Size;
end;
Open;
end;
end;
Można to sprawdzić na przykład w momencie tworzenia formy. procedure TForm1.FormCreate(Sender: TObject);
begin
tt:=table1;
Koryguj_pole(tt);
end;
|
|
SOFTSALE - Oprogramowanie i Szkolenia softsale@softsale.com.pl 03-565 Warszawa , ul. Borzymowska 43 lok. 301C tel/fax:4084840,GSM:0607612428 |