n := StrPas(pCfgDes^.szNodeName);
v := StrPas(pCfgDes^.szValue);
ifn = 'LEVEL' thenFTableLevel := v
else ifn = 'BLOCK SIZE' thenFBlockSize := StrToInt(v)
else ifn = 'STRICTINTEGRITY' thenFStrictIntegrity := StrToBoolean(v);
end;
finally
FreeMem(pCfgDes, sizeof(CFGDesc));
if(h <> nil) thenDbiCloseCursor(h);
end;
end;
procedureTBDEConfig.SetLocalShare(Value : Boolean);
begin
UpdateCfgFile('\SYSTEM\INIT', 'LOCAL SHARE', BooleanToStr(Value));
FLocalShare := Value;
end;
procedureTBDEConfig.SetMinBufSize(Value : Integer);
begin
UpdateCfgFile('\SYSTEM\INIT', 'MINBUFSIZE', IntToStr(Value));
FMinBufSize := Value;
end;
procedureTBDEConfig.SetMaxBufSize(Value : Integer);
begin
UpdateCfgFile('\SYSTEM\INIT', 'MAXBUFSIZE', IntToStr(Value));
FMaxBufSize := Value;
end;
procedureTBDEConfig.SetSystemLangDriver(Value : String);
begin
UpdateCfgFile('\SYSTEM\INIT', 'LANGDRIVER', Value);
FSystemLangDriver := Value;
end;
procedureTBDEConfig.SetParadoxLangDriver(Value : String);
begin
UpdateCfgFile('\DRIVERS\PARADOX\INIT', 'LANGDRIVER', Value);
FParadoxLangDriver := Value;
end;
procedureTBDEConfig.SetMaxFileHandles(Value : Integer);
begin
UpdateCfgFile('\SYSTEM\INIT', 'MAXFILEHANDLES', IntToStr(Value));
FMaxFileHandles := Value;
end;
procedureTBDEConfig.SetNetFileDir(Value : String);
begin
UpdateCfgFile('\DRIVERS\PARADOX\INIT', 'NET DIR', Value);
FNetFileDir := Value;
end;
procedureTBDEConfig.SetTableLevel(Value : String);
begin
UpdateCfgFile('\DRIVERS\PARADOX\TABLE CREATE', 'LEVEL', Value);
FTableLevel := Value;
end;
procedureTBDEConfig.SetBlockSize(Value : Integer);
begin
UpdateCfgFile('\DRIVERS\PARADOX\TABLE CREATE', 'BLOCK SIZE', IntToStr(Value));
FBlockSize := Value;
end;
procedureTBDEConfig.SetStrictIntegrity(Value : Boolean);
begin
UpdateCfgFile('\DRIVERS\PARADOX\TABLE CREATE', 'STRICTINTEGRITY', BooleanToStr(Value));
FStrictIntegrity := Value;
end;
procedureTBDEConfig.SetDefaultDriver(Value : String);
begin
UpdateCfgFile('\SYSTEM\INIT', 'DEFAULT DRIVER', Value);
FDefaultDriver := Value;
end;
procedureTBDEConfig.SetAutoODBC(Value : Boolean);
begin
UpdateCfgFile('\SYSTEM\INIT', 'AUTO ODBC', BooleanToStr(Value));
FAutoODBC := Value;
end;
procedureTBDEConfig.UpdateCFGFile;
var
h : hDbiCur;
pCfgDes: pCFGDesc;
pPath : array[0..127] ofchar;
begin
StrPCopy(pPath,Path);
Check(DbiOpenCfgInfoList( nil, dbiREADWRITE, cfgPersistent, pPath, h));
GetMem(pCfgDes, sizeof(CFGDesc));
try
FillChar(pCfgDes^, sizeof(CFGDesc), #0);
while(DbiGetNextRecord(h, dbiWRITELOCK, pCfgDes, nil) = DBIERR_NONE) do begin
ifStrPas(pCfgDes^.szNodeName) = item then begin
StrPCopy(pCfgDes^.szValue, value);
Check(DbiModifyRecord(h, pCfgDes, True));
end;
end;
finally
FreeMem(pCfgDes, sizeof(CFGDesc));
if(h <> nil) thenDbiCloseCursor(h);
end;
end;
constructorTBDEConfig.Create(AOwner: TComponent);
begin
inheritedCreate(AOwner);
Init;
end;
destructorTBDEConfig.Destroy;
begin
inheritedDestroy;
end;
end.
Eryk Bottomley
Default Cursor после завершения выполнения запросов
Тема: Возврат курсора по умолчанию после выполнения запроса
Почему мышиный курсор не возвращается обратно (не становится обычной стрелкой) после выполнения запроса?
При выполнении открытого запроса, Delphi изменяет для вас курсор, и произойти это может даже в середине события, как, например, при нажатии на кнопку. Приведенный ниже пример отобразит курсор в виде иконки песочных часов (SQL Hourglass Icon) после того, как вы закроете окно с сообщением. При этом мышь будет вести себя так, как будто находится в режиме "стрелки".
// Добавьте к обработчику события нажатия кнопки,
// использование запроса при этом не имеет значения
// Select * from Customer (в IBLocal)
withquery1 do begin
close;
open;
showmessage(IntToStr(RecordCount));
end; // with
При наступлении события, Delphi пробует обратно придать курсору тип стрелки (Arrow), при этом выводится новая форма (диалог showmessage), которая мешает автоматическому переводу курсора в режим стрелки.
Читать дальше