Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Combobox, morgen Prüfung kleine Frage (https://www.delphipraxis.net/180337-combobox-morgen-pruefung-kleine-frage.html)

Bamer 12. Mai 2014 22:36

Combobox, morgen Prüfung kleine Frage
 
Gelöst
E: Wenn mir jemand sagen könnte wieso ich das hinzufügen müsste würd ich mich freuen. :)

Controls in uses hinzufügen
self.Parent := AOwner as TWinControl; nach create von der Combobox im Constructor
Guten Tag,

ich hoffe ich bin hier im richtigen Forum, wenn nicht dann entschuldige ich mich dafür.
Ich habe eine wichtige Frage und bin hier am verzweifeln.
Wenn ich mein Programm starte kommt ein Fehler weiss jemand wieso?
Ich möchte in die Combobox mein Array einfügen.
Delphi-Quellcode:
unit DecodeU;

interface
uses ExtCtrls, Classes, StdCtrls, Controls ;



type TDecode=class(TPanel)

private
  Ring1:TCombobox;
 // Ring2:TCombobox;
 // Ring3:TCombobox;
 // Ring4:TCombobox;
 zahl:integer;
{-Wert1: array[0..9] of integer = (0,1,2,3,4,5,6,7,8,9);
  FarbString2: array[0..9] of String = ('schwarz','braun','rot','orange','gelb','grün','blau','violett','grau','weiß');
  Wert2: array[0..9] of integer = (0,1,2,3,4,5,6,7,8,9);
  FarbString3: array[0..11] of String = ('silber','gold','schwarz','braun','rot','orange','gelb','grün','blau','violett','grau','weiß');
  Wert3: array[0..11] of integer = (0.01,0.1,1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000);
  FarbString4: array[0..11] of String = ('keine','silber','gold','schwarz','braun','rot','orange','gelb','grün','blau','violett','grau');
  Wert4: array[0..11] of integer = (20,10,5,0,1,2,0,0,0.50,0.25,0.10,0.05); -}
public
  constructor Create(AOwner:TComponent); override;
end;
const   FarbString1: array[0..9] of String = ('---','braun','rot','orange','gelb','grün','blau','violett','grau','weiß');
         Wert1: array[0..9] of integer = (0,1,2,3,4,5,6,7,8,9);
implementation

{ TDecode }

constructor TDecode.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  width:=600;
  height:=200;
  Ring1:= TCombobox.create(self);
  self.Parent := AOwner as TWinControl;
  Ring1.Parent := Self;
  Ring1.width:=100;
  Ring1.top:=100;
  Ring1.left:=100;
  Ring1.Items.Add(FarbString1[0]); <---- Fehler : Project mainP.exe raised exception class EInvalidOperation with message 'COntrol " has no parent window'. Proxess stopped. Use Step    
                                               or Run to continue.
end;

end.
Da wo der Fehler kommt habe ich schon einiges Versucht aber keiner hat geklappt könnte mir jmd die Rätels Lösung zeigen? :)

Danke im Vorraus!

LG Bamer

Popov 12. Mai 2014 22:54

AW: Combobox, morgen Prüfung kleine Frage
 
Editiere das und ändere CODE-Tags in DELPHI-Tags (Schaler "Erweitert"), dann kann den Code leichter lesen (ich zumindest).

Volker Z. 12. Mai 2014 22:58

AW: Combobox, morgen Prüfung kleine Frage
 
Hallo,

und ein herzliches Willkommen in der DP.

Zitat:

Ich möchte in die Combobox mein Array einfügen.
Was Du versuchst funktioniert nicht (Combobox.Items.Add fügt einen string aber kein array der Liste hinzu siehe auch OH).

Du kannst folgendes machen:
Delphi-Quellcode:
constructor TDecode.Create(AOwner: TComponent);
var
  i : Integer;
begin
  inherited Create(AOwner);
  width:=600;
  height:=200;
  Ring1:= TCombobox.create(self);
  Ring1.Parent := Self;
  Ring1.width:=100;
  Ring1.top:=100;
  Ring1.left:=100;
  for i := 0 to High (FarbString1) do
    Ring1.Items.Add(FarbString1 [i]);
end;
Gruß

Bamer 12. Mai 2014 23:25

AW: Combobox, morgen Prüfung kleine Frage
 
Vielen Vielen Dank. Ich stoße grade auf mein zweites Problem

Delphi-Quellcode:
unit DecodeU;

interface
uses ExtCtrls, Classes, StdCtrls, Controls;



type TDecode=class(TPanel)

private
  Ring1:TCombobox;
  Ring2:TCombobox;
  Ring3:TCombobox;
  Ring4:TCombobox;
  Ausgabe:TLabel;


public
  constructor Create(AOwner:TComponent); override;
end;
const   FarbString1: array[0..9] of String = ('---','braun','rot','orange','gelb','grün','blau','violett','grau','weiß');
         Wert1: array[0..9] of integer = (0,1,2,3,4,5,6,7,8,9);
         FarbString2: array[0..9] of String = ('schwarz','braun','rot','orange','gelb','grün','blau','violett','grau','weiß');
         Wert2: array[0..9] of integer = (0,1,2,3,4,5,6,7,8,9);
         FarbString3: array[0..11] of String = ('silber','gold','schwarz','braun','rot','orange','gelb','grün','blau','violett','grau','weiß');
         Wert3: array[0..11] of double = (0.01,0.1,1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000);
         FarbString4: array[0..11] of String = ('keine','silber','gold','schwarz','braun','rot','orange','gelb','grün','blau','violett','grau');
         Wert4: array[0..11] of double = (20,10,5,0,1,2,0,0,0.50,0.25,0.10,0.05);
implementation

{ TDecode }

constructor TDecode.Create(AOwner: TComponent);
var
  i:integer;
begin
  inherited Create(AOwner);
  width:=600;
  height:=200;

  Ring1:= TCombobox.create(self);
  Ring2:= TCombobox.create(self);
  Ring3:= TCombobox.create(self);
  Ring4:= TCombobox.create(self);

  self.Parent := AOwner as TWinControl;

  Ring1.Parent := Self;
  Ring1.width:=100;
  Ring1.top:=50;
  Ring1.left:=10;

  Ring2.Parent := Self;
  Ring2.width:=100;
  Ring2.top:=50;
  Ring2.left:=120;

  Ring3.Parent := Self;
  Ring3.width:=100;
  Ring3.top:=50;
  Ring3.left:=230;

  Ring4.Parent := Self;
  Ring4.width:=100;
  Ring4.top:=50;
  Ring4.left:=340;

  for i:=0 to 11 do
  begin
    if i<=9 then
    begin
      Ring1.Items.Add(FarbString1[i]);
      Ring2.Items.Add(FarbString2[i]);
    end;
    Ring3.Items.Add(FarbString3[i]);
    Ring4.Items.Add(FarbString4[i]);
  end;

  Ausgabe:= TLabel.create(self);
  Ausgabe.Parent := Self;
  Ausgabe.width:=350;
  Ausgabe.top:=150;
  Ausgabe.left:=150;
  Ausgabe.caption:=('Bitte geben sie ihren Widerstand ein');

end;


end.
Weiss jemand wie ich eine onChange Funktion mache? Also ich vermute das ist dashier
Delphi-Quellcode:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin

end;

end.
Aber füge ich bei TForm TDecode und ändere Combobox1 in Ring1 bekomme ich ein Fehler. Weiß jemand wie das genau geht?
Ich versuche es grade neben bei auch zu googeln, aber ich weiss nicht mal nach was ich genau googeln soll. :s

Vielen Dank für eure schnelle Antwort auf mein letzten Beitrag.

Ich habs gefunden sobald ich es fertig habe werde ich es posten, damit es evtl anderen Usern hilft :)

LG Bamer :)

Volker Z. 12. Mai 2014 23:42

AW: Combobox, morgen Prüfung kleine Frage
 
Hallo,

Zitat:

Für eine Alternative Idee wäre ich auch zufrieden
Kann ich Dir leider nicht anbieten, da die Informationslage das nicht hergibt.
Zitat:

Weiss jemand wie ich eine onChange Funktion mache?
Vielleicht so (nur das Wesentliche):
Delphi-Quellcode:
type
  TDecode = class (TPanel)
    private
      procedure Ring1Change (Sender : TObject);
  end;

procedure TDecode.Ring1Change (Sender : TObject);
begin
  // Do what ever you want
end;

constructor TDecode.Create(AOwner: TComponent);
begin
  Ring1:= TCombobox.Create (self);
  Ring1.OnChange := Ring1Change
end;
Gruß

Bamer 13. Mai 2014 00:07

AW: Combobox, morgen Prüfung kleine Frage
 
Vielen Dank für deine Hilfe Volker Z.
Ich stelle hier nochmal meinen ganzen Quellcode zur Verfügung wer vielleicht das ein oder andere darauf braucht.
Delphi-Quellcode:
unit DecodeU;

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



type TDecode=class(TPanel)

private
  Ring1:TCombobox;
  Ring2:TCombobox;
  Ring3:TCombobox;
  Ring4:TCombobox;
  Ausgabe:TLabel;
protected
  procedure myChange(Sender: TObject);
public
  constructor Create(AOwner:TComponent); override;
end;
const   FarbString1: array[0..9] of String = ('---','braun','rot','orange','gelb','grün','blau','violett','grau','weiß');
         Wert1: array[0..9] of integer = (0,1,2,3,4,5,6,7,8,9);
         FarbString2: array[0..9] of String = ('schwarz','braun','rot','orange','gelb','grün','blau','violett','grau','weiß');
         Wert2: array[0..9] of integer = (0,10,20,30,40,50,60,70,80,90);
         FarbString3: array[0..11] of String = ('silber','gold','schwarz','braun','rot','orange','gelb','grün','blau','violett','grau','weiß');
         Wert3: array[0..11] of double = (0.01,0.1,1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000);
         FarbString4: array[0..11] of String = ('keine','silber','gold','schwarz','braun','rot','orange','gelb','grün','blau','violett','grau');
         Wert4: array[0..11] of double = (20,10,5,0,1,2,0,0,0.50,0.25,0.10,0.05);
implementation

{ TDecode }

constructor TDecode.Create(AOwner: TComponent);
var
  i:integer;
begin
  inherited Create(AOwner);
  width:=600;
  height:=200;

  Ring1:= TCombobox.create(self);
  Ring2:= TCombobox.create(self);
  Ring3:= TCombobox.create(self);
  Ring4:= TCombobox.create(self);

  self.Parent := AOwner as TWinControl;

  Ring1.Parent := Self;
  Ring1.width:=100;
  Ring1.top:=50;
  Ring1.left:=10;

  Ring2.Parent := Self;
  Ring2.width:=100;
  Ring2.top:=50;
  Ring2.left:=120;

  Ring3.Parent := Self;
  Ring3.width:=100;
  Ring3.top:=50;
  Ring3.left:=230;

  Ring4.Parent := Self;
  Ring4.width:=100;
  Ring4.top:=50;
  Ring4.left:=340;

  for i:=0 to 11 do
  begin
    if i<=9 then
    begin
      Ring1.Items.Add(FarbString1[i]);
      Ring2.Items.Add(FarbString2[i]);
    end;
    Ring3.Items.Add(FarbString3[i]);
    Ring4.Items.Add(FarbString4[i]);
  end;
  Ausgabe:= TLabel.create(self);
  Ausgabe.Parent := Self;
  Ausgabe.width:=350;
  Ausgabe.top:=150;
  Ausgabe.left:=150;

  ring1.ItemIndex := 0;
  ring2.ItemIndex := 1;
  ring3.ItemIndex := 2;
  ring4.ItemIndex := 1;

  ring1.OnChange := myChange;
  ring2.OnChange := myChange;
  ring3.OnChange := myChange;
  ring4.OnChange := myChange;
end;



procedure TDecode.myChange(Sender: TObject);
var
zwischenzahl:double;
begin
  zwischenzahl:= (Wert1[ring1.ItemIndex] + Wert2[ring2.ItemIndex]) * Wert3[ring3.ItemIndex];


  Ausgabe.Caption:=(FormatFloat('0.00',zwischenzahl) + ' Ohm Toleranz:'+ (FloatToStr (Wert4[ring4.ItemIndex]))+'%');
end;

end.
PS: Leider gibts kein Thank you Button :(

LG Bamer


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:36 Uhr.

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