Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    piccaweb
    Guest

    [ Delphi ] - DbEdit e selezione

    Ciao!
    Ho una DBEdit collegata a un dataSource dinamico e il dato quando viene visualizzato é allineato a destra, ma quando ci clikko dentro per cambiare il valore cambia allineamento e si sposta sinistra!
    Non é una cosa molto importate , ma anche solo per curiosità, mi piacerebbe sapere se si può fare in modo che rimanga sempre allineato a dx!

    E ancora: a questa casella é associato un evento OnChange che ogni volta che varia il valore viene modificata una funzione!
    Però ho notato che per fare in modo che si verifichi l'evento se cliccare all'esterno della casella !
    Ora vorrei sapere se é possibile far scattare questa funzione esterna ogni volta che premo il Tasto INVIO per evitare di spostarmi col mouse e cliccare fuori dall'area del componente!

    Spero di essermi spiegato...altimenti sono qui!
    ciao

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Per quanto riguarda il primo problema sull'allineamento, occorre fare alcune premesse. Devi sapere che quando Delphi accede ad una tabella, il componente discendente da TDataSet utilizzato (TTable, TIBTable, TADOTable e così via) costruisce al proprio interno un insieme di componenti che rappresentano la struttura dei campi di cui è composta la tabella fisica collegata dal componente DataSet. Il DataSet esamina i campi e costruisce un oggetto TField corrispondente per ciascuno di essi, a cui attribuisce proprietà diverse a seconda del tipo di campo, ma comunque predefinite. Lo sviluppatore Delphi può modificare questo comportamento definendo egli stesso i campi a cui accedere e le loro proprietà, tra cui è presente Alignment, una proprietà di TField che indica qual è l'allineamento standard da mantenere quando si visualizza tale campo in un controllo visuale, DBGrid, DBEdit e altri "data control". Per importare e personalizzare le caratteristiche dei campi, basta fare doppio clic sul componente TADOTable. Verrà visualizzato il Field Editor, l'editor dei campi, con cui è possibile creare manualmente gli oggetti TField corrispondenti ai campi della tabella per modificarne le proprietà a piacimento tramite l'Object Inspector. Con il tasto destro, è possibile aggiungere tutti i campi (operazione consigliata) o uno alla volta. Una volta aggiunto il campo all'elenco, possiamo fare clic su di esso e modificare l'allineamento, il formato dei decimali e tante altre proprietà in modo centralizzato e valevole per tutti i controlli che useranno tale definizione di campo. E' ovvio che in questo modo dovremo intervenire manualmente aggiungendo o rimuovendo i campi qualora modifichiamo la struttura della tabella fisica.

    Per il secondo problema, non ho capito quale funzione deve essere richiamata. Ad ogni modo, è possibile gestire l'evento OnKeyPress e verificare se il tasto premuto (rappresentato dal parametro Key di tipo Char) è uguale a #13, il codice ASCII corrispondente a INVIO.

    Spero di aver dato una buona spiegazione.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    piccaweb
    Guest
    Grazie per la avermi chiarito le idee riguardo la prima domanda , mentre per la seconda ho ancora un dubbio!

    All'evento onKeyPress viene eseguito questo codice:
    codice:
    if Key = #13 Then
            begin
             Key := #0;
             MostraResiduo(Residuo);
             End;
    Solamente che non funziona!
    Come mai?
    Mi sembra che sia tutto corretto...

  4. #4
    Dicci cosa intendi con la funzione "MostraResiduo" e la variabile "Residuo"

  5. #5
    piccaweb
    Guest
    Ecco la procedura
    codice:
    procedure MostraResiduo(OutS:TEdit);
    var Saldo,Conc,Diff:Currency;
    begin
    Saldo:=DataM_Noleggi.T_PagamentiSaldo.Value;
    Conc:=DataM_Noleggi.T_PagamentiPrezzoConc.Value;
    If (Saldo>0) OR
     (Conc>0) Then //Differenza
       OutS.Text:=CurrToStr(Conc-Saldo-DataM_Noleggi.T_PagamentiAnticipo.Value )
       Else
       OutS.Text:='...';
    End;

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.