Avatar billede epo_blackdevil Nybegynder
16. marts 2005 - 08:59 Der er 8 kommentarer og
1 løsning

opdatere data i listbox

jeg har en listbox hvor der en samling aktier.
disse skal kunne skfte kurs via en timer.
den timer beregner den nye kurs hvert 10'ende sekund.

hvordan kan jeg gøre så når en variabel værdi bliver opdateret så skal den smide det nye tal ind i listboxen istedet for det gamle.

det duer ikke med id da det er forskellige hvor aktierne står alt efter om alle er købt eller ej
Avatar billede epo_blackdevil Nybegynder
16. marts 2005 - 09:03 #1
er det evt nemmere bare at slette alle linier i listboxen og tilføje dem igen med den nye data?
Avatar billede epo_blackdevil Nybegynder
16. marts 2005 - 10:02 #2
nej det med at slette virker ikke da dn aktie man har valgt i listboxen bliver "unselected" hver gange list boxen opdateres
Avatar billede doc404 Novice
16. marts 2005 - 17:06 #3
Hvad står der nøjagtigt i en linie i listboxen?
16. marts 2005 - 18:40 #4
Du kunne gemme listbox'ens ItemIndex i en midlertidig variabel imens din listbox opdateres.
Alternativt kunne du gemme navnet på den aktie der er markeret i en midlertidig variabel, og så lave en lille rutine der, efter at listboxen er opdateret, marker den linie der indeholder det gemte navn.
Avatar billede kammeyer Nybegynder
16. marts 2005 - 21:51 #5
Det var faktisk sjovt at lege med. Jeg har ikke din beregning, men den kan du lave som du vil - og med alle de faktorer du har lyst - se koden nedenfor.

Jeg har lavet det med et associeret objekt på stringlisten i listboksen. Det objekt kender til "alt" om de beregninger du skal bruge (når du selv lige retter dem til - for jeg har ikke de beregninger :)  )

Kode:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TStock = class(TObject)
    private
      FFactor: double;
      FBasevalue: double;
      FSelected: boolean;
      FStockname: string;
    public
      procedure calculate;
      property Factor: double read FFactor write FFactor;
      property Basevalue: double read FBasevalue write FBasevalue;
      property Selected: boolean read FSelected write FSelected;
      property Stockname: string read FStockname write FStockname;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  stock: TStock;
begin
  // Populate listbox from database or other place

  Listbox1.Items.Clear;

  Stock := TStock.Create;
  Stock.Basevalue := 100;
  Stock.Stockname := 'abc';
  Listbox1.Items.AddObject('abc: 100', stock);
  Stock := TStock.Create;
  Stock.Basevalue := 130;
  Stock.Stockname := 'bed';
  Listbox1.Items.AddObject('bed: 130', stock);
  Stock := TStock.Create;
  Stock.Basevalue := 230;
  Stock.Stockname := 'dad';
  Listbox1.Items.AddObject('dad: 230', stock);
  Stock := TStock.Create;
  Stock.Basevalue := 330;
  Stock.Stockname := 'gad';
  Listbox1.Items.AddObject('gad: 330', stock);
  Stock := TStock.Create;
  Stock.Basevalue := 430;
  Stock.Stockname := 'ere';
  Listbox1.Items.AddObject('ere: 430', stock);
  Stock := TStock.Create;
  Stock.Basevalue := 530;
  Stock.Stockname := 'jag';
  Listbox1.Items.AddObject('jag: 530', stock);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  i: integer;
  stock: TStock;
begin
  // Calc new
  for i := 0 to Listbox1.Items.count -1 do
    begin
      stock := Listbox1.Items.Objects[i] as TStock;
      stock.Factor := 1.30;                          // find en ny værdi fra et eller andet sted - måske fra en liste
      stock.calculate;                                // beregn værdi ud fra ny faktor (lav din egen beregning der)
      stock.Selected := Listbox1.Selected[i];        // save selected value
      Listbox1.Items.Delete(i);                      // delete old entry
      Listbox1.Items.InsertObject(i, stock.Stockname + ': ' + FloatToStr(stock.Basevalue), stock);      // put it back
      Listbox1.Selected[i] := stock.Selected;        // restore selected value
    end;
end;

procedure TStock.calculate;
begin
  FBaseValue := FBaseValue * FFactor;
end;

end.
Avatar billede kammeyer Nybegynder
16. marts 2005 - 21:52 #6
hov - glemte:

button1's caption er: Fyld !
button2's caption er: Genberegn
Avatar billede epo_blackdevil Nybegynder
17. marts 2005 - 10:30 #7
kammeyer prøver det lige så vender jeg tilbage.
Avatar billede epo_blackdevil Nybegynder
19. marts 2005 - 12:53 #8
kammeyer smid lige et svar
Avatar billede kammeyer Nybegynder
20. marts 2005 - 02:46 #9
:)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester