Componentes.Terceros.RemObj.../internal/5.0.23.613/1/RemObjects SDK for Delphi/Samples/First Sample/FirstSampleServerMain.pas
david 2824855ea7 - Modificación del paquete RemObjects_Core_D10 para que sea un paquete de runtime/designtime (antes era designtime sólo)
- Recompilación en Delphi10 de todos los paquetes de RO para generar las DCU's en Lib\D10
- Recompilación en Delphi10 de todos los paquetes de DA para generar las DCU's en Lib\D10

git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.RemObjects@9 b6239004-a887-0f4b-9937-50029ccdca16
2007-09-10 14:06:19 +00:00

121 lines
3.3 KiB
ObjectPascal

unit FirstSampleServerMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uROPoweredByRemObjectsButton,
Grids, ValEdit, uROClient, uROBinMessage, uROServer, uROIndyTCPServer,
uROIndyHTTPServer, StdCtrls;
type
TFirstSampleServerMainForm = class(TForm)
ValueListEditor: TValueListEditor;
ROServer: TROIndyHTTPServer;
BinMessage: TROBinMessage;
Memo1: TMemo;
AddButton: TButton;
DeleteButton: TButton;
ROPoweredByRemObjectsButton: TROPoweredByRemObjectsButton;
procedure FormCreate(Sender: TObject);
procedure DeleteButtonClick(Sender: TObject);
procedure AddButtonClick(Sender: TObject);
procedure ValueListEditorValidate(Sender: TObject; ACol, ARow: Integer;
const KeyName, KeyValue: string);
procedure FormDestroy(Sender: TObject);
procedure ValueListEditorStringsChange(Sender: TObject);
private
StrList: TStringList;
{ Private declarations }
public
{ Public declarations }
MultiReadSingleWriter: TMultiReadExclusiveWriteSynchronizer;
end;
var
FirstSampleServerMainForm: TFirstSampleServerMainForm;
implementation
{$R *.dfm}
procedure TFirstSampleServerMainForm.FormCreate(Sender: TObject);
begin
ROServer.Active := true;
StrList := TStringList.Create;
StrList.Assign(ValueListEditor.Strings);
MultiReadSingleWriter := TMultiReadExclusiveWriteSynchronizer.Create;
end;
procedure TFirstSampleServerMainForm.DeleteButtonClick(Sender: TObject);
var
fRect: TGridRect;
begin
ValueListEditor.RestoreCurrentRow;
fRect := ValueListEditor.Selection;
if ValueListEditor.Keys[fRect.Top] = '' then Exit;
ValueListEditor.DeleteRow(Frect.Top);
ActiveControl := ValueListEditor;
end;
procedure TFirstSampleServerMainForm.AddButtonClick(Sender: TObject);
var
i: integer;
fRect: TGridRect;
begin
ActiveControl := ValueListEditor;
i := ValueListEditor.InsertRow('', '', True);
fRect.Left := 0;
fRect.Top := i;
fRect.Right := 0;
fRect.Bottom := i;
ValueListEditor.Selection := fRect;
ValueListEditor.EditorMode := True;
end;
procedure TFirstSampleServerMainForm.ValueListEditorValidate(Sender: TObject; ACol,
ARow: Integer; const KeyName, KeyValue: string);
var
s: string;
begin
while ValueListEditor.Cells[0, ARow] = '' do
if InputQuery('Enter nickname', 'Enter nickname for ''' + ValueListEditor.Cells[1, ARow] + ''':', s) then begin
ValueListEditor.Cells[0, ARow] := s;
end
else begin
ValueListEditor.RestoreCurrentRow;
ValueListEditor.DeleteRow(ARow);
Exit;
end;
while ValueListEditor.Cells[1, ARow] = '' do
if InputQuery('Enter Full Name', 'Enter Full Name for ''' + ValueListEditor.Cells[0, ARow] + ''':', s) then begin
ValueListEditor.Cells[1, ARow] := s;
end
else begin
ValueListEditor.RestoreCurrentRow;
ValueListEditor.DeleteRow(ARow);
Exit;
end;
end;
procedure TFirstSampleServerMainForm.FormDestroy(Sender: TObject);
begin
StrList.Free;
MultiReadSingleWriter.Free;
end;
procedure TFirstSampleServerMainForm.ValueListEditorStringsChange(
Sender: TObject);
begin
MultiReadSingleWriter.BeginWrite;
try
StrList.Assign(ValueListEditor.Strings);
finally
MultiReadSingleWriter.EndWrite;
end;
end;
end.