
s3c
Membros-
Total de itens
817 -
Registro em
-
Última visita
Tudo que s3c postou
-
Se você estiver se referindo à propriedade SQL do objeto TQuery, então é um objeto TStrings mesmo. Basta você utilizar: Qry1.SQL.Add('Select ...'); { ou } Qry1.SQL.Text := 'Select ...';
-
Por exemplo para filtrar todo o mes 01/2006, você pode utilizar: Select ... From ... Where Cpo_Data Like '%01/2006'
-
Sim, mas no código acima, quando o Edit1 receber o foco, fará com que o Form2 fique atrás do Form1.
-
você quer jogar uma tela em cima da outra e manter o foco na tela que fica embaixo ?
-
Mas quando você atribui implicitamente: frmClass := TfrmCliente; você sabe que irá criar um Form da classe TfrmCliente. Para você criar Forms ou outros objetos sabendo apenas o nome da classe, você tem que registrar essas classes pelo RegisterClass e depois acessá-las pelo nome(string), utilizando GetClass ou FindClass.
-
Colega, quando você faz: frmClass : TComponentClass; E depois:frmClass := TfrmCliente; Application.CreateForm(frmClass, frm); Nada mais é que:frm := TfrmCliente.Create(Application); // ou Application.CreateForm(TfrmCliente, frm);Ou seja, você está criando um Form que não é pai ou filho de ninguém e seu Owner é o TApplication.
-
Quais são os tipos dos parâmetros ?
-
Se frm é da classe TfrmCliente, então você deve criar: frm := TfrmCliente.CreateNew(Application);O Owner no construtor não pode ser um TClass.
-
Abrindo Threads você não fica mais amarrado no evento onAccept e tb não precisa mais utilizar o evento onClientRead. Desabilite o evento onClientRead e defina a Thread: type TSock_Thread = class(TThread) private Socket :TCustomWinSocket; public constructor Create(aSocket:TCustomWinSocket); procedure Execute; override; end; Na Implementation:constructor TSock_Thread.Create(aSocket:TCustomWinSocket); begin inherited Create(true); // cria suspensa Socket := aSocket; // passa o Socket FreeOnTerminate := true; // libera automaticamente end; procedure TSock_Thread.Execute; var s:String; begin While not Terminated and Socket.Connected do begin if Socket.ReceiveLength > 0 then // evita o evento onClientRead begin s := Socket.ReceiveText; // recebe Socket.SendText(s); // envia end; Sleep(1); // evita a CPU ficar em 100% end; end; No evento onAccept:procedure TForm1.ServerSocket1Accept(Sender: TObject; Socket: TCustomWinSocket); var TST:TSock_Thread; begin TST := TSock_Thread.Create(Socket); // instancia o objeto TST.Resume; // coloca a Thread em execução end; Notei que você utiliza a propriedade Connections; vale uma dica de que se um Client se desconectar de forma anormal, essa propriedade não é atualizada de imediato.
-
Abra uma Thread para cada cliente no evento onAccept do TServerSocket, passando o Socket no construtor da Thread. Com isto você saberá o Socket correspondente a cada cliente conectado, assim como fará processamentos paralelos, não deixando que um cliente espere o processamento do outro.
-
Antes de dar o Resume, teste se ela está suspensa: if PT.Suspended then PT.Resume;
-
Defina uma classe que descenda de TThread: type TPingThread = Class(TThread) procedure Execute; override; constructor Create; end; Depois implemente os dois métodos:constructor TPingThread.Create; begin inherited Create(true); // cria suspensa FreeOnTerminate := false; // deixa você liberar o objeto end; procedure TPingThread.Execute; begin While not Terminated do begin // Aqui você coloca o código do evento timer // Não deixe sair deste While, executando Suspend após sua tabela chegar ao fim end; end; Defina uma variável p/ a Thread:var PT:TPingThread; No onCreate do Form você instancia:PT := TPingThread.Create; No onTimer você ativa:PT.Resume; No onDestroy você libera:PT.Free;
-
Como você está fazendo o ping ?
-
Não existe uma função padrão que chame dlls. As dlls podem ser escritas em diversas linguagens e exportar infinitos métodos e funções. você deve saber os parâmetros dos métodos ou funções que a dll exporta para poder chamá-la sem erros.
-
var vars:array[0..3] of ShortInt; begin FillChar(vars, SizeOf(vars), 1); end;
-
Não tenho certeza, mas acho que o action de SystemParametersInfo é Spi_GetKeyboardCues, setando pvParam para true ou false.
-
você pode colocar os componentes num TPanel e fazer: Panel1.Enabled := false; Ou você pode criar um método passando um array de componentes. Quanto a instâncias, se C2 e C3 forem a instância de C1, então quando você fizer C1.Enabled = false, C2 e C3 também ficarão desabilitados.
-
Pelo que sei e utilizo de Threads, só conheço um tipo. Quando você inicia uma ou mais Threads, elas ficam rodando concorrentemente entre elas e a Thread principal do seu programa. Em seu construtor Create, você pode dizer para criá-la suspensa, se suspended = false, então ela irá executar o método Execute. você pode suspendê-la durante a execução utilizando Suspend e reativá-la utilizando Resume. você tb pode definir sua prioridade de execução em Priority e não liberá-la em seu término pela propriedade FreeOnTerminate. Bom acho que isto é o básico sobre Threads.
-
você pode utilizar um TListview e no evento OnColumnClick você chama seu método AlphaSort; com isto ele irá gerar o evento OnCompare e neste evento você coloca como vai ser a ordenação.
-
Mas você só quer conhecer a classe TThread ou vai aplicá-la em algum projeto ?
-
para qual finalidade você quer utilizar Threads ?
-
Só uma sugestão: Quando vários Clients solicitam ao Server, este não pode estar síncrono com os Clients. Imagine que um Client desconecte durante uma transmissão; o Server ficará na espera deste Client indefinidamente, comprometendo assim os outros. Em outras palavras, os Clients devem ser sempre síncronos com o Servidor, mas o Servidor deve ser sempre assíncrono com os Clients.
-
Veja as funções GetVersion e GetVersionEx da Kernel32.dll
-
Colega, referente sua primeira pergunta, não sei quanto ao Zeos, mas o método Append que descende de TDataset, coloca o Dataset em inserção e ele deve estar em modo dsEdit p/ poder incluir um novo registro p/ depois ser dado o Post. Como você está usando ExecSQL, isso não tem nada a ver com Append; você deve utilizar um Select para isto.
-
Para não redimensionar as colunas, fixe MaxWidth e MinWidth. O negrito de uma coluna você pode utilizar o evento onCustomDrawSubItem: procedure TForm1.ListView1CustomDrawSubItem(Sender: TCustomListView; Item: TListItem; SubItem: Integer; State: TCustomDrawState; var DefaultDraw: Boolean); begin if SubItem = 1 then Sender.Canvas.Font.Style := Sender.Canvas.Font.Style + [fsBold]; end;