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
Çok teşekkürler, İnsan bazen burnunu ucunu göremez dedikleri bu olsa gerek...