
s3c
Membros-
Total de itens
817 -
Registro em
-
Última visita
Tudo que s3c postou
-
você quer gravar no BDE?
-
você pode utilizar um ListView e armazenar nos seus items sua classe relativa pela propriedade Data. Ex: ListPedidos.Items[0].Data := Pedido[0]; ListItens.Items[0].Data := Pedido[0].ItemPedido[0];
-
São funções da Advapi32.dll na Windows.pas Confesso que não me aprofundo muito nisso também, mas basicamente é o seguinte: OpenProcessToken retorna o Handle da indicação de ajuste de privilégios para o seu processo. LookupPrivilegeValue retorna em TTkAtu.Privileges[0].Luid o identificador p/ o privilégio de shutdown(SeShutdownPrivilege). Com estas duas informações, você diz que o seu processo poderá desligar a máquina habilitando TTkAtu.Privileges[0].Attributes p/ enable e logo apos efetivar com AdjustTokenPrivileges. Se o NT não reclamar em nenhum desses passos, então o shutdown funciona. Se reclamar e você quiser saber o erro, então você deve utilizar GetLastError após cada uma delas.
-
Olá Glaucia. Bom se essa consulta for por comandos sql, posta como você fez.
-
Mas esse comando sql só traz um único campo em um único registro. É esta query mesmo?
-
A comparação de um VarChar é a mesma que uma string. Se a data estiver em string, teria que estar invertida p/ comparar corretamente.
-
Acho que tem a ver com os privilégios de shutdown do NT. Tente modificá-los: var TTkHandle :THandle; TTkAtu,TTkAnt :TTokenPrivileges; TTkRet :DWORD; begin if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, TTkHandle) then if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', TTkAtu.Privileges[0].Luid) then begin TTkAtu.PrivilegeCount := 1; TTkAtu.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; Windows.AdjustTokenPrivileges(TTkHandle, False, TTkAtu, SizeOf(TTkAtu), TTkAnt, TTkRet); ExitWindowsEx(EWX_POWEROFF or EWX_FORCE, 0); end; end;
-
Acredito que interceptando os eventos de erro. Se não passar por nenhum, então o email foi enviado.
-
Segundo a documentação funciona. Experimente combinar: ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE, 0); ou ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCEIFHUNG, 0); ou ExitWindowsEx(EWX_POWEROFF,0); Obs: EWX_FORCE e EWX_FORCEIFHUNG são antagônicos.
-
Existe sim é o TServerSocket e TClientSocket. você tem que colocar os dois na aplicação. Por exemplo: Quando A envia p/ B, A se conecta com B através do TClientSocket, por outro lado B recebe a msg de A através do TServerSocket. Quando B envia p/ A, ocorre o inverso.
-
Procure o arquivo Consts.pas e altere as consantes SMsgDlg* Depois gere seu novo .dcu e jogue-o p/ o diretporio lib do Delphi. Para colocar máscara no inputbox, altere no Dialogs.pas na função InputQuery depois que ela cria o Edit: Edit := TEdit.Create(Form); Insira: Edit.PasswordChar := '*'; Gere o Dialogs.dcu e jogue-o p/ o diretporio lib do Delphi. Obs: é bom salvar os dcus antigos.
-
Coloque no .dpr: uses Windows, Dialogs; var hMutex:THandle; begin hMutex := 0; try hMutex := CreateMutex(nil, true, 'Caption da Aplicação'); if GetLastError = ERROR_ALREADY_EXISTS then begin ShowMessage('Aplicação já está aberta !'); CloseHandle(hMutex); end else begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end; finally ReleaseMutex(hMutex); end;
-
procedure TForm1.Button1Click(Sender: TObject); begin if ListBox1.Count > 0 then Label1.Caption := ListBox1.Items[ListBox1.Count-1]; end;
-
você pode colocar a lista de nomes num TListBox. Daí você cria um TList de TStringList que são os detalhes, para cada ítem do TListBox. Quando o nome for clicado você apresenta os detalhes: procedure TForm1.ListBox1Click(Sender: TObject); begin ListBox2.Items := TStringList(lDet[ListBox1.ItemIndex]); end; ListBox2 é a lista de detalhes lDet é o TList dos detalhes
-
você pode colocar num form 3 edits que só aceitem números inteiros onde: Edti1 elevado à 3 deve ser igual à (Edit2 elevado à 3 + Edit3 elevado à 3) Daí você pede para digitarem os valores e você fornece o resultado. No caption do form você põe assim: "Para quem satisfizer a igualdade, ganhará o prêmio da mega-sena acumulada".
-
dm.sqldataset_cliente.commandtext:='SELECT COUNT(*) as Tot FROM CLIENTE'; dm.sqldataset_cliente.Open; Total := dm.sqldataset_cliente.fieldbyname('Tot').asInteger; dm.sqldataset_cliente.Close;
-
Acho que ele quer saber o nome do FieldByName que ele tem que usar
-
Não seria assim: if ListBox1.ItemIndex >= 0 then Label1.Caption := ListBox1.Items[ListBox1.ItemIndex];
-
Ué, será que entendí bem? FormatDateTime('dd/mm/yy',now); // Data de hoje FormatDateTime('dd/mm/yy',now+7); // Data depois de 7 dias Não é isso?
-
Daí não entendí. porque o ShellExecute não vai ser prático p/ seus clientes?
-
Acho que o problema está no auto-incremento. você não está utilizando o auto-incremento do banco e sim via software por trigger. Se você quiser continuar utilizando a trigger, acho que você deve dar um: Select Max(Codigo)+1.
-
porque você não dá um ShellExecute no winzip?
-
Pode ser que o novo codigo incrementado seja chave e exista no banco.
-
Grave a informação no registro do windows.
-
Acho que é QuickRpt, mas a propriedade PaperSize está definida em QRPrntr.