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;