AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Delphi- Combobox

Ein Thema von Carter · begonnen am 10. Jul 2009 · letzter Beitrag vom 10. Jul 2009
Antwort Antwort
Seite 2 von 2     12
Carter

Registriert seit: 10. Jul 2009
4 Beiträge
 
#11

Re: Delphi- Combobox

  Alt 10. Jul 2009, 17:01
Ich hab jetzt bissel was versucht, doch die Fehlermeldung erscheint immer noch. Ich muss euch auch dazu sagen, dass ich ein totaler Delphi Noob bin... Könnt ihr mir die Schritte im Einzelnen erklären? Denn so komm ich nicht wirklich weiter...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.400 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Delphi- Combobox

  Alt 10. Jul 2009, 17:21
Zeig doch mal, was Du versucht hast.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Carter

Registriert seit: 10. Jul 2009
4 Beiträge
 
#13

Re: Delphi- Combobox

  Alt 10. Jul 2009, 17:34
Das war mein anfänglicher Quellcode:

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    ComboBox1: TComboBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label4: TLabel;
    Label5: TLabel;
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button2Click(Sender: TObject);
var a,b,c:integer;
begin

a:=strtoint(combobox1.Text);
b:=strtoint(edit1.Text);
c:=a*b;

edit2.Text:=inttostr(c)

end;

end.

Nun siehts so aus, weil ich schon wieder viel gelöscht habe, weil es einfach nicht funzte:

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
  TMyClass = class
    GroupBox1: TGroupBox;
    ComboBox1: TComboBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label4: TLabel;
    Label5: TLabel;
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    FBezeichnung: string;
    FZahl: integer; { Private-Deklarationen }
  public
    property Bezeichnung: string read FBezeichnung write FBezeichnung;
    property Zahl: integer read FZahl write FZahl; { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button2Click(Sender: TObject);
var a,b,c:integer;
begin

a:=strtoint(combobox1.Text);
b:=strtoint(edit1.Text);
c:=a*b;

edit2.Text:=inttostr(c)

end;

end.
Du hast eine Procedure vorhins geschrieben, wo soll ich die hinmachen? Einfach nur reinschreiben? Das hat ich vorhins auch und es hat dennnoch nicht geklappt...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.400 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: Delphi- Combobox

  Alt 10. Jul 2009, 17:57
Da hast Du aber Einiges durcheinandergeworfen. Zunächst einmal ist die Klasse kein "Teil" des Formulars, sondern eine eigenständige Klasse.
Delphi-Quellcode:
unit Unit1;

interface

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

type

  TMyClass = class
  private
    FBezeichnung: string;
    FZahl: integer; { Private-Deklarationen }
  public
    property Bezeichnung: string read FBezeichnung write FBezeichnung;
    property Zahl: integer read FZahl write FZahl; { Public-Deklarationen }
  end;

  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    ComboBox1: TComboBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label4: TLabel;
    Label5: TLabel;
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  end;
Dann musst Du irgendwann (z.B. bei Klick eines Buttons) diese Klasse instanzieren (d.h. ein Objekt dieser Klasse anlegen) und den Items der ComboBox hinzufügen. Damit ist diese Instanz dann in den Comboboxitems hinterlegt. Beispiel:
Delphi-Quellcode:
procedure TForm1.ButtonHinzufuegenClick(Sender: TObject);
//Variable des Typs der oben deklarierten Klasse
var MyClass: TMyClass;
begin
  //Anlegen der Instanz
  MyClass := TMyClass.Create;
  //Ändern der Eigenschaften dieser Instanz
  MyClass.Bezeichnung := Edit1.Text;
  MyClass.Zahl := StrToIntDef(Edit2.Text,0);
  //Speichern der Instanz in den Items
  ComboBox1.Items.AddObject(MyClass.Bezeichnung {das kann auch ein beliebiger anderer String sein},MyClass);
end;
Spätestens beim Zerstören des Formulars musst Du diese Instanzen dann auch wieder freigeben, sonst produzierst Du ein Speicherleck.
Delphi-Quellcode:
procedure TForm1.FormDestroy(Sender: TObject);
var i: integer;
begin
  //von hinten nach vorn durchgehen und Objekte freigeben
  for i := ComboBox1.Items.Count - 1 downto 0 do
    ComboBox1.Items.Objects[i].Free;
end;
Auf ein bestimmtes Objekt kannst Du über den ItemIndex der ComboBox zugreifen.
Delphi-Quellcode:
procedure TForm1.ComboBox1Change(Sender: TObject);
var aObject: TObject;
begin
  //Objekt holen
  aObject := ComboBox1.Items.Objects[ComboBox1.ItemIndex];
  //ist das Objekt überhaupt zugewiesen?
  if Assigned(aObject) then
    //wenn ja, in TMyClass wandeln und das "Zahl"-Feld ausgeben
    ShowMessage(IntToStr((aObject as TMyClass).Zahl));
end;
Ich hoffe, das hilft Dir weiter.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf