Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Runtime ile SpinEdit toplamı alma
#1
Herkese merhaba,

Runtime süresi içerisinde oluşturduğum SpinEdit're nasıl toplam aldıracağıma dair bir çözüm bulmadım, toplama esnasında son kullanılanı baz alıp topluyor.
Normal olmuş olsa aşağıdaki gibi bir çözüm var ama runtime olduğu için tek ayırt edici özelllik tagları.

Total := SpinEdit1.Value + SpinEdit2.Value + SpinEdit3.Value;




if Sender is TSpinEdit then
 begin

  if TSpinEdit(Sender).Tag = 1 then
  begin

  TSpinEdit(Sender).MinValue := 200;
  TSpinEdit(Sender).MaxValue := 10000;
  TSpinEdit(Sender).Increment:= 200;

end;

  if TSpinEdit(Sender).Tag = 2 then
  begin 
  TSpinEdit(Sender).MinValue := 100 ;
  TSpinEdit(Sender).MaxValue := 10000;
  TSpinEdit(Sender).Increment:= 100;
  end;


  if TSpinEdit(Sender).Tag = 3 then
  begin
 TSpinEdit(Sender).MinValue := 25 ;
  TSpinEdit(Sender).MaxValue := 10000;
  TSpinEdit(Sender).Increment:= 25;
  end;
Cevapla
#2
(04-12-2024, Saat: 10:45)denizfatihi Adlı Kullanıcıdan Alıntı: Herkese merhaba,

Runtime süresi içerisinde oluşturduğum SpinEdit're nasıl toplam aldıracağıma dair bir çözüm bulmadım, toplama esnasında son kullanılanı baz alıp topluyor.
Normal olmuş olsa aşağıdaki gibi bir çözüm var ama runtime olduğu için tek ayırt edici özelllik tagları.

Total := SpinEdit1.Value + SpinEdit2.Value + SpinEdit3.Value;




if Sender is TSpinEdit then
 begin

  if TSpinEdit(Sender).Tag = 1 then
  begin

  TSpinEdit(Sender).MinValue := 200;
  TSpinEdit(Sender).MaxValue := 10000;
  TSpinEdit(Sender).Increment:= 200;

end;

  if TSpinEdit(Sender).Tag = 2 then
  begin 
  TSpinEdit(Sender).MinValue := 100 ;
  TSpinEdit(Sender).MaxValue := 10000;
  TSpinEdit(Sender).Increment:= 100;
  end;


  if TSpinEdit(Sender).Tag = 3 then
  begin
 TSpinEdit(Sender).MinValue := 25 ;
  TSpinEdit(Sender).MaxValue := 10000;
  TSpinEdit(Sender).Increment:= 25;
  end;


Onchange Eventi oluştur. tümünü create ederken bu metodu referans göster toplamları içinde yap.
WWW
Cevapla
#3
   
Begin : = end / 2;
Cevapla
#4
unit MainUnit;

interface

uses
 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, ColumnCellsFormat,
 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Rest.Json, ComObj, Vcl.StdCtrls, Vcl.Samples.Spin;

type
 TMainForm = class(TForm)
   SpinEdit1: TSpinEdit;
   SpinEdit2: TSpinEdit;
   procedure FormCreate(Sender: TObject);
   procedure SpinEditOnChange(Sender: TObject);
 private

 public
   { Public declarations }
 end;

var
 MainForm: TMainForm;

implementation

{$R *.dfm}

procedure TMainForm.FormCreate(Sender: TObject);

begin

 with TSpinEdit.Create(self) do
 begin
   tag := 54;
   Left := 160;
   Top := 128;
   Width := 121;
   Height := 24;
   OnChange := SpinEditOnChange;
   Parent := MainForm
 end;

 with TSpinEdit.Create(self) do
 begin
   tag := 54;
   Left := 160;
   Top := 158;
   Width := 121;
   Height := 24;
   OnChange := SpinEditOnChange;
   Parent := MainForm
 end;

end;

procedure TMainForm.SpinEditOnChange(Sender: TObject);
var
 i: integer;
 toplam: NativeUInt;
begin
 for i := 0 to self.ComponentCount - 1 do
 begin
   if (self.Components[i] is TSpinEdit) then
   begin
     if (TSpinEdit(self.Components[i]).tag = 54) then
     begin
       toplam := toplam + TSpinEdit(self.Components[i]).Value;

     end;
   end;
 end;
 Caption := toplam.ToString;
end;

end.
WWW
Cevapla
#5
Öncelikle çok teşekkür ederim.

Yazıdan sonra bakarken biraz dolambaçlı da olsa başka bir çözüm buldum değerleri labella aktarıp en alt kısımda toplam almak gibi.



if Sender is TSpinEdit then
 begin

  if TSpinEdit(Sender).Tag = 1 then
  begin

  TSpinEdit(Sender).MinValue := 200;
  TSpinEdit(Sender).MaxValue := 10000;
  TSpinEdit(Sender).Increment:= 200;
  
200.Caption:= FloatToStr(TSpinEdit(Sender).Value);  //eklenen kısmlar 

end;


  if TSpinEdit(Sender).Tag = 2 then
  begin

 
  TSpinEdit(Sender).MinValue := 100 ;
  TSpinEdit(Sender).MaxValue := 10000;
  TSpinEdit(Sender).Increment:= 100;
  100.Caption:= FloatToStr(TSpinEdit(Sender).Value);
  end;



  if TSpinEdit(Sender).Tag = 3 then
  begin

TSpinEdit(Sender).MinValue := 25 ;
  TSpinEdit(Sender).MaxValue := 10000;
  TSpinEdit(Sender).Increment:= 25;
  25.Caption:= FloatToStr(TSpinEdit(Sender).Value);
  end;

Total := strtofloat(200.Caption) + strtofloat(100.Caption) + + strtofloat(25.Caption)
Cevapla
#6
Seni yanlış anlamışım. Ben tüm spineditlerin toplamını bir yerde görmek istiyorsun sandım.

200.Caption:= FloatToStr(TSpinEdit(Sender).Value); 

yerine


TSpinEdit(Sender).Caption:= FloatToStr(TSpinEdit(Sender).Value); 

yaz bari Smile
WWW
Cevapla
#7
En alt satırda kümüle toplama gelince yine kafa karıştıracak, çalışıyorsa dokunma Smile
Teşekkür ederim tekrardan. 

Total := strtofloat(200.Caption) + strtofloat(100.Caption) +  strtofloat(25.Caption)
Cevapla
#8
(04-12-2024, Saat: 11:59)denizfatihi Adlı Kullanıcıdan Alıntı: En alt satırda kümüle toplama gelince yine kafa karıştıracak, çalışıyorsa dokunma Smile
Teşekkür ederim tekrardan. 

Total := strtofloat(200.Caption) + strtofloat(100.Caption) +  strtofloat(25.Caption)

Benim paylaştığım gibi dinamik toplasan hiç bir yer karışmaz Wink Yarın yeni bir spin eklemen gerektiğinde satır satır gezersin.
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Information Uygulama yönetici olarak mı çalışıyor? (runtime tespit etme) bakyuz 0 395 28-04-2025, Saat: 17:22
Son Yorum: bakyuz
Video runtime packages deposizm 5 958 05-02-2025, Saat: 09:54
Son Yorum: damert6
  Excel içeri alma Para birimi gonulali 3 826 28-10-2024, Saat: 05:34
Son Yorum: griposter
  kap.org.tr veri alma hk. pro_imaj 7 14.128 22-10-2024, Saat: 19:57
Son Yorum: Zeynepfeyza20
  Hikvision IP Kameradan Görüntü Alma erdogan 5 1.265 08-10-2024, Saat: 09:24
Son Yorum: sadikacar60



Konuyu Okuyanlar: 1 Ziyaretçi