?? storicorb_u.pas
字號:
unit StoricoRb_u;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, Grids, DBGrids, StdCtrls, DBCtrls, Mask, ExtCtrls, Db, DBTables,
ActnList;
type
TStoricoRb_Form = class(TForm)
SpeedButton1: TSpeedButton;
TTTRiba: TTable;
DSTriba: TDataSource;
TTDriba: TTable;
DSDriba: TDataSource;
TTTRibaRiba: TFloatField;
TTTRibaBancaappoggio: TStringField;
TTTRibaNumeroRiba: TFloatField;
TTTRibaDatascadenza: TDateField;
TTTRibaDebitore: TStringField;
TTTRibaBancadebitore: TStringField;
TTTRibaImporto: TCurrencyField;
TTTRibaDettaglioelaborato: TBooleanField;
TTTRibaDisco: TBooleanField;
TTDribaRiba: TFloatField;
TTDribaProgressivo: TAutoIncField;
TTDribaDocumento: TFloatField;
TTDribaNumerofattura: TFloatField;
TTDribaSerie: TStringField;
TTDribaDatafattura: TDateField;
TTDribaImportototalefattura: TCurrencyField;
TTDribaImportoRiba: TCurrencyField;
DBNavigator1: TDBNavigator;
Label1: TLabel;
DBEdit1: TDBEdit;
TTTRibaLKBanche: TStringField;
Label2: TLabel;
DBLookupComboBox1: TDBLookupComboBox;
Label3: TLabel;
DBEdit2: TDBEdit;
TTTRibaLkDebitore: TStringField;
Label4: TLabel;
DBLookupComboBox2: TDBLookupComboBox;
TTTRibaLkBancaDeb: TStringField;
Label5: TLabel;
DBLookupComboBox3: TDBLookupComboBox;
Label6: TLabel;
DBEdit3: TDBEdit;
DBCheckBox1: TDBCheckBox;
DBGrid1: TDBGrid;
DBNavigator2: TDBNavigator;
SpeedButton2: TSpeedButton;
ActionList1: TActionList;
cercami: TAction;
elencami: TAction;
Label7: TLabel;
TTTRibaImportoinlettere: TStringField;
Label8: TLabel;
DBEdit4: TDBEdit;
SpeedButton4: TSpeedButton;
TTTRibaRiferimento: TStringField;
DBEdit5: TDBEdit;
DBEdit6: TDBEdit;
DBEdit7: TDBEdit;
TTTRibaGruppo: TFloatField;
Label9: TLabel;
DBEdit8: TDBEdit;
procedure SpeedButton1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure TTTRibaAfterInsert(DataSet: TDataSet);
procedure TTTRibaBeforeDelete(DataSet: TDataSet);
procedure SpeedButton3Click(Sender: TObject);
procedure cercamiExecute(Sender: TObject);
procedure elencamiExecute(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure TTTRibaImportoChange(Sender: TField);
private
{ Private declarations }
function NumeraRiba(Codice, Anno : String) : longInt;
function NumToLet(Numero : currency) : String;
public
{ Public declarations }
end;
var
StoricoRb_Form: TStoricoRb_Form;
implementation
{$R *.DFM}
Uses ana_mod, stp_Riba_u, Ucerca, Uelenco;
function TStoricoRb_form.NumeraRiba(Codice, Anno : String) : LongInt;
var
num : TTable;
numrit : LongInt;
begin
//Calcola il numeratore assoluto delle Riba
num := TTable.create(self);
num.databaseName := 'euro2000';
num.TableName := 'numera.db';
num.open;
if num.findKey([Codice, Anno]) then
begin
num.edit;
num.FieldByName('Valore').Value := num.FieldByName('Valore').Value + 1;
num.Post;
end
else
begin
num.insert;
num.FieldByName('Numeratore').Value := Codice;
num.FieldByName('Anno').Value := Anno;
num.FieldByName('Valore').Value := 1;
num.post;
end;
numRit := num.FieldByName('Valore').Value;
num.close;
result := numRit;
end;
function TStoricoRb_form.NumToLet(Numero : currency) : String;
var
unita : array[1..9] of String;
decina : array [1..9] of String;
sDecina : array [0..9] of String;
attrib : array[1..3] of String;
terzetti : array[1..4] of string;
strnum : String;
parola, StrApp : string;
cifra, i, j : Integer;
begin
//Converte il numero passato in parola
unita[1] := 'uno';
unita[2] := 'due';
unita[3] := 'tre';
unita[4] := 'quattro';
unita[5] := 'cinque';
unita[6] := 'sei';
unita[7] := 'sette';
unita[8] := 'otto';
unita[9] := 'nove';
decina[1] := 'dieci';
decina[2] := 'venti';
decina[3] := 'trenta';
decina[4] := 'quaranta';
decina[5] := 'cinquanta';
decina[6] := 'sessanta';
decina[7] := 'settanta';
decina[8] := 'ottanta';
decina[9] := 'novanta';
sDecina[0] := 'dieci';
sDecina[1] := 'undici';
sDecina[2] := 'dodici';
sDecina[3] := 'tredici';
sDecina[4] := 'quattordici';
sDecina[5] := 'quindici';
sDecina[6] := 'sedici';
sDecina[7] := 'diciassette';
sDecina[8] := 'diciotto';
sDecina[9] := 'diciannove';
attrib[1] := 'miliardi';
attrib[2] := 'milioni';
attrib[3] := 'mila';
terzetti[1] := '';
terzetti[2] := '';
terzetti[3] := '';
terzetti[4] := '';
parola := '';
if numero > 999999999999 then
begin
result := '-errore-';
exit;
end;
if numero = 0 then
begin
//Se il numero e' zero, e' presto fatto
result := 'zero';
exit;
end;
//Altrimenti...
//Prima convertiamo il numero in string
strNum := formatFloat('000000000000',numero);
for i := 1 to 4 do
for j := 1 to 3 do
terzetti[i] := terzetti[i] + StrNum[(3*(i-1)) + j];
for i := 4 DownTo 1 do
begin
StrApp := '';
//Se uno dei terzetti e' uguale ad 1
if strToInt(terzetti[i]) = 1 then
begin
case i of
1 : StrApp := 'unmiliardo';
2 : StrApp := 'unmilione';
3 : StrApp := 'mille';
4 : StrApp := 'uno';
end;
end
else
begin
for j := 1 to 3 do
begin
cifra := strToInt(terzetti[i][j]);
//Analisi cifra centinaia del terzetto
if j = 1 then
begin
if cifra <> 0 then
begin
if cifra > 1 then
strApp := unita[cifra];
StrApp := StrApp + 'cento';
if terzetti[i][2] = '8' then
StrApp := copy(StrApp,1,(length(StrApp) - 1));
end;
end;
//Analisi cifra decine del terzetto
if j = 2 then
begin
if cifra <> 0 then
begin
if cifra = 1 then
strApp := strApp + sDecina[StrToInt(terzetti[i][3])]
else
begin
strApp := strApp + decina[cifra];
if (terzetti[i][3] = '8') or (terzetti[i][3] = '1') then
StrApp := copy(StrApp,1,(length(StrApp) - 1));
end;
end;
end;
//Analisi cifra unita del terzetto
if j = 3 then
begin
if terzetti[i][2] <> '1' then
if cifra > 0 then
StrApp := StrApp + unita[cifra];
end;
end;
end;
//Aggiunta degli attributi
if strToInt(terzetti[i]) > 1 then
if i < 4 then
StrApp := StrApp + attrib[i];
if StrApp <> '' then
Parola := StrApp + Parola;
end;
result := parola;
end;
procedure TStoricoRb_Form.SpeedButton1Click(Sender: TObject);
begin
release;
end;
procedure TStoricoRb_Form.FormDestroy(Sender: TObject);
begin
if (TTTRiba.state = DsEdit) or (TTTRiba.state = DsInsert) then
TTTRiba.post;
if (TTDRiba.state = DsEdit) or (TTDriba.state = DsInsert) then
TTDRiba.post;
end;
procedure TStoricoRb_Form.SpeedButton2Click(Sender: TObject);
var
Totale : currency;
Riferimento : String;
begin
if (TTTRiba.state = DsEdit) or (TTTRiba.state = DsInsert) then
TTTRiba.post;
if (TTDRiba.state = DsEdit) or (TTDriba.state = DsInsert) then
TTDRiba.post;
if TTDriba.RecordCount = 0 then
begin
showMessage('Attenzione! Non
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -