Delphi Can

Orjinalini görmek için tıklayınız: Sayıyı değiştirme
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Selam Listview de adet alanın var, adet alanını klavyeden sayı girerek artırma veya azaltmak istiyorum; seçili olan satırın sayılara basıldığında değerinin değişmesini nasıl sağlarım;

Örnek:
2
45
63 gibi sayılar girdiğimde önceki sayı silinip yerine yeni sayı yazılacak.


procedure TForm2.LVSatisSelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
begin
  with LVSatis do
  begin
    if Selected <> Nil then
    begin
     Selected.SubItems[1] := '2';
    end;
  end;
end;
(08-06-2017, Saat: 19:26)serhat Adlı Kullanıcıdan Alıntı: [ -> ]Selam Listview de adet alanın var, adet alanını klavyeden sayı girerek artırma veya azaltmak istiyorum; seçili olan satırın sayılara basıldığında değerinin değişmesini nasıl sağlarım;

Örnek:
2
45
63 gibi sayılar girdiğimde önceki sayı silinip yerine yeni sayı yazılacak.


procedure TForm2.LVSatisSelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
begin
  with LVSatis do
  begin
    if Selected <> Nil then
    begin
     Selected.SubItems[1] := '2';
    end;
  end;
end;

Merhaba, ilgili kodu OnKeyDown/OnKeyPress gibi olay yöneticilerinin altına yazmalısınız. Tabi basılan tuşun numeric bir tuş olup olmadığını da kontrol etmeniz yararlı bir davranış olacaktır.
Sanırım kısmen çözdüm; fakat sayıları yan, yana yazdırmadım, nerede hata yapıyorum acaba?

procedure TForm2.LVSatisKeyUp(Sender: TObject; var Key: Word;
 Shift: TShiftState);
var
 SL0, SL1, SL2, SL3, SL4, SL5, SL6, SL7, SL8, SL9: String;
 SL: TStringList;
begin
 Showmessage(Format('KeyValue = %d', [Key]));
 SL := TStringList.Create;
 try
   if (Format('%d', [Key]) = '96') then
   begin
     SL0 := '0';
   end;
   if (Format('%d', [Key]) = '97') then
   begin
     SL1 := '1';
   end;
   if (Format('%d', [Key]) = '98') then
   begin
     SL2 := '2';
   end;
   if (Format('%d', [Key]) = '99') then
   begin
     SL3 := '3';
   end;
   if (Format('%d', [Key]) = '100') then
   begin
     SL4 := '4';
   end;
   if (Format('%d', [Key]) = '101') then
   begin
     SL5 := '5';
   end;
   if (Format('%d', [Key]) = '102') then
   begin
     SL6 := '6';
   end;
   if (Format('%d', [Key]) = '103') then
   begin
     SL7 := '7';
   end;
   if (Format('%d', [Key]) = '104') then
   begin
     SL8 := '8';
   end;
   if (Format('%d', [Key]) = '105') then
   begin
     SL9 := '9';
   end;
   SL.Add(SL0 + SL1 + SL2 + SL3 + SL4 + SL5 + SL6 + SL7 + SL8 + SL9);
   Caption := SL.Text;
 finally
   SL.Free;
 end;
end;
procedure TForm4.ListviewKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 if (Ord(Key) >= 96) and (Ord(Key) <= 105) then
 begin
   Caption := GetCharFromVKey(Key);
 end;
end;



function TForm4.GetCharFromVKey(vkey: Word): string;
var
 keystate: TKeyboardState;
 retcode: Integer;
begin
 Win32Check(GetKeyboardState(keystate));
 SetLength(Result, 2);
 retcode := ToAscii(vkey, MapVirtualKey(vkey, 0), keystate, @Result[1], 0);
 case retcode of
   0:
     Result := ''; // no character
   1:
     SetLength(Result, 1);
   2:
     ;
 else
   Result := ''; // retcode < 0 indicates a dead key
 end;
end;


Kolay gelsin
Hocam güzelde tek, tek sayılara basıldığında bu sayıları yan, yana nasıl alabilirim ki?
Konu güncel, arka, arkaya sayılara basıldığında yan yana bu sayıları nasıl alabilirim.
(11-06-2017, Saat: 13:18)serhat Adlı Kullanıcıdan Alıntı: [ -> ]Konu güncel, arka, arkaya sayılara basıldığında yan yana bu sayıları nasıl alabilirim.

Caption := SL.Text;
yazan yeri
Caption := Caption + SL.Text;
şeklinde değiştirerek   Huh
Çok teşekkürler, İnsan bazen burnunu ucunu göremez dedikleri bu olsa gerek...