Здесь представлены работающие компоненты обновления данных, полученных запросом через TADOQuery, аналогичные компонентам BDE TQuery,TUpdateSQL Компоненты TADOUpdateQuery, TADOUpdateSQL выполняют в точности те же функции что и компоненты BDE TQuery,TUpdateSQL. Это может способствовать быстрому переводу программ с BDE на ADO. Компоненты работающие (в исходных текстах есть комментарии), но до полной совместимости необходимы доработки, например: отсутствуют события onUpdateRecord, onUpdateError. Предлагаю всем подключится и довести дело до конца. procedure TForm1.Button1Click(Sender: TObject); begin PowerControl1.Action := actCDEject; // Или... actLogOFF, actShutDown...PowerControl1.Execute; end; = = = = = = = = = = = = = = = = = = = = = = = = = Component Code: unit PowerControl; interface uses WinTypes, WinProcs, Messages, SysUtils, Classes, Controls, Forms, Graphics, MMSystem; type TAction = (actLogOFF, actShutDown, actReBoot, actForce, actPowerOFF, actForceIfHung, actMonitorOFF, actMonitorON, actCDEject, actCDUnEject); type TPowerControl = class(TComponent) private FAction: TAction; procedure SetAction(Value: TAction); protected public function Execute: Boolean; published property Action: TAction read FAction write SetAction; end; procedure Register;
implementation
procedure register; begin RegisterComponents('K2', [TPowerControl]); end;
procedure TPowerControl.SetAction(Value: TAction); begin FAction := Value; end;
function TPowerControl.Execute: Boolean; begin with (Owner as TForm) do case FAction of actLogOff: ExitWindowsEx(EWX_LOGOFF, 1); actShutDown: ExitWindowsEx(EWX_SHUTDOWN, 1); actReBoot: ExitWindowsEx(EWX_REBOOT, 1); actForce: ExitWindowsEx(EWX_FORCE, 1); actPowerOff: ExitWindowsEx(EWX_POWEROFF, 1); actForceIfHung: ExitWindowsEx(EWX_FORCEIFHUNG, 1); actMonitorOFF: SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0); actMonitorON: SendMessage(Application.Handle, WM_SYSCOMMAND,
SC_MONITORPOWER, -1); actCDEject: mciSendstring('SET CDAUDIO DOOR OPEN WAIT', nil, 0, Handle); actCDUnEject: mciSendstring('SET CDAUDIO DOOR CLOSED WAIT', nil, 0, Handle); end; {Case} Result := True; end; end. |