Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi In den ListView SubItems Beträge addieren (https://www.delphipraxis.net/103122-den-listview-subitems-betraege-addieren.html)

DeddyH 10. Nov 2007 21:58

Re: In den ListView SubItems Beträge addieren
 
Das kommt mir komisch vor, stell doch mal einen Screenshot rein.

mkinzler 10. Nov 2007 21:59

Re: In den ListView SubItems Beträge addieren
 
Und was geht nicht? Bzw. wie können wir dir Helfen?

DeddyH 10. Nov 2007 22:02

Re: In den ListView SubItems Beträge addieren
 
Ich vermute stark, dass er versehentlich Items und SubItems verwechselt hat, deshalb meine Bitte um einen Screenshot.

Gehstock 10. Nov 2007 22:04

Re: In den ListView SubItems Beträge addieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier

mkinzler 10. Nov 2007 22:05

Re: In den ListView SubItems Beträge addieren
 
Zitat:

Zitat von DeddyH
Ich vermute stark, dass er versehentlich Items und SubItems verwechselt hat, deshalb meine Bitte um einen Screenshot.

So siehts aus.

DeddyH 10. Nov 2007 22:06

Re: In den ListView SubItems Beträge addieren
 
@Gehstock: der Preis steht nicht in Items[2], sondern in SubItems[1].

Gehstock 10. Nov 2007 22:08

Re: In den ListView SubItems Beträge addieren
 
Danke

und nochmal Danke hatte ich grad auch

Gehstock 10. Nov 2007 22:40

Re: In den ListView SubItems Beträge addieren
 
Delphi-Quellcode:
procedure TForm4.ListView1Change(Sender: TObject; Item: TListItem;
  Change: TItemChange);
var
i: Integer;
begin
i:=0;
//i :=Listview1.Selected.Index;
if Listview1.Items[i].Checked then
 begin
   Ergebnis := StrtoFloat(Edit1.Text) + StrtoFloat(Listview1.Items[i].SubItems[1]);
    end else
     begin
      Ergebnis := StrtoFloat(Edit1.Text) - StrtoFloat(Listview1.Items[i].SubItems[1]);
     end;
     Edit1.Text :=Floattostr(Ergebnis)
end;
die zuweisung von i klappt nicht da ja nichts selected wird also wie sag ich i das es
das 2. oder 3. item ist wenn ich in die 2. zeile klicke

Gehstock 11. Nov 2007 13:46

Re: In den ListView SubItems Beträge addieren
 
Delphi-Quellcode:
procedure TForm4.ListView1Change(Sender: TObject; Item: TListItem;
  Change: TItemChange);
var
i: integer;
gesamt : Extended;
begin
 gesamt := 5.99 ; // Grundpreis
  for i := 0 to ListView1.Items.Count - 1 do
   if Listview1.Items[i].Checked then
      gesamt := gesamt + StrToFloat(ListView1.Items[i].SubItems[1]);
       if gesamt = 5.99 then gesamt := 0; wenn nichts gewählt auch kein grundpreis
      Edit1.Text := FloatToStr(gesamt);
end;
habs selbst erledigt

Sharky 11. Nov 2007 14:54

Re: In den ListView SubItems Beträge addieren
 
Hai Gehstock,

als Tip für zukünftigen Code habe ich das ganze mal etwas umgebaut.
Delphi-Quellcode:
uses
  SysUtils;

procedure RealInc(var x: Extended; const aValue: Extended = 1.0); overload;
begin
  x := x + aValue;
end;


function RealInc(var x: Extended; const aValue: string = '';
  errohandling: Boolean = True): Boolean; overload;
var
  realvalue: Extended;
begin
  result := False;
  if TryStrToFloat(aValue, realvalue) then
  begin
    RealInc(x, realvalue);
    result := True;
  end
  else
  begin
    if (errohandling) then
    begin
      raise Exception.create(Format(
        'Der Inhalt von aValue ("%s") ist kein gültiger Gleitkommawert', [aValue]));
    end;
  end;
end;

function AddValuesFromLV(aLV: TListView; var aValue: Extended): Integer;
var
  i: Integer;
  checkcount: Integer;
begin
  checkcount := 0;
  with aLV do
  begin
    for i := 0 to Pred(Items.Count) do
    begin
      if (Items[i].Checked) then
      begin
        if (RealInc(aValue, Items[i].SubItems[1], False)) then
        begin
          Inc(checkcount);
        end;
      end;
    end;
  end;
  result := checkcount;
end;

procedure TDemo_Form.ListView1Change(Sender: TObject; Item: TListItem;
  Change: TItemChange);
const
  grundpreis = 5.99;
var
  gesamt: Extended;
begin
  gesamt := 0;
  if (AddValuesFromLV((Sender as TListView), gesamt) > 0) then
  begin
    RealInc(gesamt, grundpreis);
  end;
  Edit1.Text := FloatToStr(gesamt);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz