Delphi --- Edit
// Kirjoitettaessa Edit-kenttään eka kirjain muutetaan aina isoksi:
procedure TForm1.Edit1Change(Sender: TObject);
begin
if (Length(Edit1.Text)) = 1 then
begin
Edit1.Text := AnsiUpperCase(Edit1.Text[1]);
Edit1.SelStart := 1;
end;
end;
// sama jutska eri paketissa:
procedure TForm1.Edit1Change(Sender: TObject);
var OldStart : Integer;
begin
With Edit1 do
if Text <> '' then begin
OnChange := NIL;
OldStart := SelStart;
Text := UpperCase(Copy(Text,1,1))+LowerCase(Copy(Text,2,Length(Text)));
SelStart := OldStart;
OnChange := Edit1Change;
end;
end;
// Jos halutaan estää jonkun merkin syöttäminen Edit1:seen
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = 'å' then Key := #0; // å:ta ei huolita Edit1:seen
if not (key in ['0'..'9',#8,#13,#46]) then Key := #0;
// tässä hyväksytään ainoastaan 0-9, peruutus,enter ja piste
end;
// Estetään käyttäjää lyömästä kahta pilkkua lukuun
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var T: String;
begin
if Key = chr(32) then Key := #0; //välilyöntiä ei huolita
if Key = chr(46) then Key := #0; // pistettä ei huolita
if (key in ['A'..'Z','a'..'z']) then key := #0; // eikä kirjaimia
if (key in ['Ä','ä','Ö','ö','Å','å']) then key := #0;// eikä skandeja
if key = chr(44) then // ja pilkulla tsekataan onko pilkkua
begin
T := Edit1.Text;
if Pos(',', T) > 0 then key := #0;
//jos on, ei hyväksytä, harvemmin samassa luvussa esiintyy kahta pilkkua
end;
end;
//Pyöristys: Formilla on yksi edit komponentti ja neljä Buttonia
//Edit1:seen kirjoitettu liukuluku muutetaan (erotin = pilkku)
//Button1:llä pyöristetään kokonaisluvuksi
//Button2:llä pyöristetään yhteen desimaaliin
//Button3:llä pyöristetään kahteen desimaaliin
//Button4:llä pyöristetään kolmeen desimaaliin
procedure TForm1.Button1Click(Sender: TObject);
var e1: extended;
T: String;
begin
if Pos(',', Edit1.Text) > 0 then
begin
e1 := StrToFloat(Edit1.Text);
Str(e1:2:0, T); // Kokonaisluvuksi
while Pos('.', T) > 0 do
T[Pos('.', T)] := ',';
Edit1.Text := T;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var e1: extended;
T: String;
begin
if Pos(',', Edit1.Text) > 0 then
begin
e1 := StrToFloat(Edit1.Text);
Str(e1:2:1, T); //Str funktio käyttää PISTETTÄ joten
while Pos('.', T) > 0 do //vaihdetaan löytyneet pisteet
T[Pos('.', T)] := ','; //pilkuiksi (yksi desimaali)
Edit1.Text := T;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var e1: extended;
T: String;
begin
if Pos(',', Edit1.Text) > 0 then
begin
e1 := StrToFloat(Edit1.Text);
Str(e1:2:2, T); // Kaksi desimaalia
while Pos('.', T) > 0 do
T[Pos('.', T)] := ',';
Edit1.Text := T;
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
var e1: extended;
T: String;
begin
if Pos(',', Edit1.Text) > 0 then
begin
e1 := StrToFloat(Edit1.Text);
Str(e1:2:3, T); //kolme desimaalia
while Pos('.', T) > 0 do
T[Pos('.', T)] := ',';
Edit1.Text := T;
end;
end;
//Edit kentästä viedään leikepöydälle napilla
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.SelectAll; //Huom! Editin sisältö pitää valita ensin
Edit1.CopyToClipboard; //Kopioi leikepöydälle
end;
//Kirjoitettaessa Edit1:seen Jokaisen Sanan Eka Kirjain Muutetaan Isoksi
procedure TForm1.Edit1Change(Sender: TObject);
var ed, S: String;
begin
//mikä on edellisen arvo
if (Length(Edit1.Text)) > 1 then
ed := Edit1.Text[(Length(Edit1.Text)-1)];
//jokaisen sanan eka kirjain isoksi
if (ed = ' ') then
begin
S := Copy(Edit1.Text, 1, (Length(Edit1.Text)-1));
Edit1.Text := S + AnsiUpperCase(Edit1.Text[Length(Edit1.Text)]);
Edit1.SelStart := Length(Edit1.Text);
end;
// eka kirjain isoksi
if (Length(Edit1.Text)) = 1 then
begin
Edit1.Text := AnsiUpperCase(Edit1.Text[1]);
Edit1.SelStart := 1;
end;
end;