

Worktime e breaktime estão aulas especiais de um intervalo. Um worktime pode ter vários breaktimes.
timestartend.calcTotal função (): Período;
começo
Resultado: Período = (Self.endtime-Self.starttime);
final;worktime.calcTotal função (): Período;
var
ib: IbreaktimeList;
i: Integer;
começo
ib: = get_breaktime;
for i: = 0 a ib.Count fazê-1 começam
Self.diff: = Self.diff - ib.Item [i]. CalcTotal;
final;
final;breaktime.get_diff função: Período;
começo
/ / Se você adicionar usuários código aqui, por favor, remova o [EcoAutoMaintained] atributo
/ / Declaração da propriedade na seção interface
Resultado: Período = (Self._endtime-Self._starttime);
final;worktime.get_diff função: Período;
começo
/ / Se você adicionar usuários código aqui, por favor, remova o [EcoAutoMaintained] atributo
/ / Declaração da propriedade na seção interface
Resultado: = intervalo (Self._endtime - Self._starttime);
final;
Agora compilar o aplicativo, vá para o ecospace designer e adicionar o pacote para o ecospace. Coloque um componente PersistenceMapperXml sobre o ecospace para que você possa desenvolver o cliente sem necessidade de a parte do servidor até o momento. Definir o nome do ficheiro de persistencemapper para data.xml ou o que quer que você suites bem.

procedimento TWinForm.DataGrid1_Paint (remetente: System.Object; e: System.Windows.Forms.PaintEventArgs);
começo
DataGrid1.BindingContext [DataGrid1.DataSource,
dataGrid1.DataMember]. Posição: = ehWorkTime.GetList.Count;
cmhWorktime.Position: = ehWorkTime.GetList.Count;
final;
Então provavelmente poderia ser mais esperto lugares para colocá-la -, mas não sei eles ;-)
Mas, por favor me avise caso você sabe.
var
c: IChange;
começo
EcoSpace.PersistenceService.RetrieveChanges;
c EcoSpace.PersistenceService.GetChanges para nos fazer
c.IsDirectConflict se então c.Action: = ChangeActionKind.Discard else
c.Action: = ChangeActionKind.Keep;
EcoSpace.PersistenceService.ApplyAllChanges;
final;
Este código recupera, através do serviço EcoSpace persistência todas as alterações persistiram. Poderia, em um ambiente multi cliente acontecer que alguém alterou os dados que você já tinha havido mudanças em seu local ecospace cache. A persistência de serviço dá-lhe a capacidade de lidar com conflitos decorrentes se for esse o caso. Eu nosso caso (loging worktime) embora não deva acontecer.
- botão direito sobre a paleta de ferramentas e escolher "Instalado. NET componentes" a partir do menu pop-up.


No nosso exemplo vamos usar Interbase com o BDP. Então, uma gota PersistenceMapperBdp e BdpConnection uma componente relativa à PersistanceMapperProvider ECOSpace. Configure o PersistenceMapperBDP para Interbase e configurar a conexão do BDPConnection de acordo com o seu ambiente local. Você só tem vazio para criar um banco de dados. Os quadros serão criados mais tarde, através da persistência mapper provedor.

Compilar o projecto e escolher a EcoSpaceType a ser utilizado para a persistência mapper provedor. (Clique sobre a superfície da persistência mapper provedor e selecioná-lo da lista pendente no objeto inspector).

Você tem agora a descomentar o código para Remoting na persistência mapper provedor. Não se esqueça de descomentar a declaração do procedimento e para adicionar a necessária implementação usa-declaração, tal como indicado nos comentários.
/ / Exemplo de código para registrar o provedor como um servidor utilizando
/ / Binário formatação em um canal TCP.
/ / Adicionar a seguinte à sua aplicação usos nível uncommenting-afirmação quando o código
/ / System.Runtime.Serialization.Formatters, System.Runtime.Remoting, System.Runtime.Remoting.Channels, System.Runtime.Remoting.Channels.Tcp;classe procedimento TEcoPersistenceMapperProvider.RegisterTcpServer (Porto: integer);
var
prestador: BinaryServerFormatterSinkProvider;
adereços: IDictionary;
chan: TcpChannel;
começo
prestador: = BinaryServerFormatterSinkProvider.Create;
provider.TypeFilterLevel: = TypeFilterLevel.Full; / / Necessário para serializations
adereços: = Hashtable.Create;
props [ 'port']: = Porto;
chan: = TcpChannel.Create (adereços, nula, fornecedor);
ChannelServices.RegisterChannel (chan);
RemotingConfiguration.RegisterWellKnownServiceType (
typeof (TEcoPersistenceMapperProvider),
«Testserver1 ',
WellKnownObjectMode.Singleton);
final;
Para concluir a configuração da Persistência do cartógrafo Provider definir o atributo SyncActive a verdade. Você também pode aumentar o valor dos atributos MaxOpenConnections e MaxPoolConnections se você tem um monte de clientes conectando ao servidor.
TWorkTimeServerEcoSpace.Create construtor;
começo
Crie herdados;
EcoPersistenceMapperProvider.TEcoPersistenceMapperProvider.RegisterTcpServer (8000);
InitializeComponent;
/ / TODO: Fazer qualquer construtor código aqui
final;
A parte do servidor está agora já totalmente funcional. Para adicionar alguns insights sobre os dados fornecidos pelos nossos clientes estamos trabalhando frontend criar o seguinte:

procedimento TWinForm.Timer1_Tick (remetente: System.Object; e: System.EventArgs);
var
c: IChange;
começo
EcoSpace.PersistenceService.RetrieveChanges;
c EcoSpace.PersistenceService.GetChanges para nos fazer
c.IsDirectConflict se então c.Action: = ChangeActionKind.Discard else
c.Action: = ChangeActionKind.Keep;
EcoSpace.PersistenceService.ApplyAllChanges;
final;
Defina o temporizador ativado propriedade para true. Salvar e iniciar o projeto e retire-a de Delphi.
Abra o cliente de novo projeto. Inicie o cliente projeto destacam-lo e dar início a um segundo cliente. Mudar o Nome de usuário no cliente e no segundo experimento. Deve-se trabalhar e é muito fácil, uma vez obtida - ECO pode torná-lo muito feliz.
- O samplecode do servidor e cliente pode ser encontrado aqui.

Delicious
Digg
Google
Yahoo