AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Lazarus (IDE) Durch ListBox1-Auswahl ListBox2-Auswahlmöglichkeiten festlegen
Thema durchsuchen
Ansicht
Themen-Optionen

Durch ListBox1-Auswahl ListBox2-Auswahlmöglichkeiten festlegen

Ein Thema von qiLy4n · begonnen am 1. Jun 2015 · letzter Beitrag vom 6. Jun 2015
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Durch ListBox1-Auswahl ListBox2-Auswahlmöglichkeiten festlegen

  Alt 1. Jun 2015, 19:03
Mal auf die Schnelle dahingetippt um das Prinzip zu zeigen

(Source und EXE im Anhang)
Delphi-Quellcode:
unit Form.Main;

interface

uses
  System.Generics.Collections,

  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TCountry = class
  private
    FCountryCode: Integer;
    FName: string;
  public
    constructor Create( const ACountryCode: Integer; const AName: string );
    property CountryCode: Integer read FCountryCode;
    property name: string read FName;
  end;

  TConverter = class
  private
    FCountryCode: Integer;
    FName: string;
  public
    constructor Create( const ACountryCode: Integer; const AName: string );
    property CountryCode: Integer read FCountryCode;
    property name: string read FName;
  end;

  TForm1 = class( TForm )
    ConverterListBox: TListBox;
    CountryComboBox: TComboBox;
    procedure CountryComboBoxChange( Sender: TObject );
    procedure ConverterListBoxClick( Sender: TObject );
  private
    FCountries: TList<TCountry>;
    FSelectedCountry: TCountry;
    FConverters: TList<TConverter>;
    FSelectedConverters: TList<TConverter>;
    FSelectedConverter: TConverter;

    procedure PopulateCountries;
    procedure PopulateSelectedConverters;
  public
    procedure AfterConstruction; override;
    procedure BeforeDestruction; override;

  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
  EnumQuery;

{ TForm1 }

procedure TForm1.AfterConstruction;
begin
  inherited;
  FCountries := TObjectList<TCountry>.Create( );
  FCountries.Add( TCountry.Create( 1, 'Deutschland' ) );
  FCountries.Add( TCountry.Create( 2, 'USA' ) );

  FConverters := TObjectList<TConverter>.Create( );
  FConverters.Add( TConverter.Create( 1, 'Meter' ) );
  FConverters.Add( TConverter.Create( 1, 'Kilometer' ) );

  FConverters.Add( TConverter.Create( 2, 'Meilen' ) );
  FConverters.Add( TConverter.Create( 2, 'Inch' ) );

  FSelectedConverters := TList<TConverter>.Create( );

  PopulateCountries;
  PopulateSelectedConverters;
end;

procedure TForm1.BeforeDestruction;
begin
  inherited;
  FreeAndNil( FSelectedConverters );
  FreeAndNil( FConverters );
  FreeAndNil( FCountries );
end;

procedure TForm1.ConverterListBoxClick( Sender: TObject );
begin
  if ConverterListBox.ItemIndex < 0 then
    FSelectedConverter := nil
  else
    FSelectedConverter := FSelectedConverters[ ConverterListBox.ItemIndex ];
end;

procedure TForm1.CountryComboBoxChange( Sender: TObject );
var
  Item: TConverter;
begin
  if CountryComboBox.ItemIndex < 0 then
    FSelectedCountry := nil
  else
    FSelectedCountry := FCountries[ CountryComboBox.ItemIndex ];

  FSelectedConverter := nil;

  FSelectedConverters.Clear;
  FSelectedConverters.AddRange( TEnumQuery.SelectFrom<TConverter>( FConverters,
    function( AConverter: TConverter ): Boolean
    begin
      Result := Assigned( FSelectedCountry ) and ( AConverter.CountryCode = FSelectedCountry.CountryCode );
    end ) );
  PopulateSelectedConverters;
end;

procedure TForm1.PopulateCountries;
var
  Item: TCountry;
begin
  CountryComboBox.Items.BeginUpdate;
  try
    CountryComboBox.Items.Clear;
    for Item in FCountries do
    begin
      CountryComboBox.Items.Add( Item.name );
    end;

    CountryComboBox.ItemIndex := FCountries.IndexOf( FSelectedCountry );
  finally
    CountryComboBox.Items.EndUpdate;
  end;
end;

procedure TForm1.PopulateSelectedConverters;
var
  Item: TConverter;
begin
  ConverterListBox.Items.BeginUpdate;
  try
    ConverterListBox.Items.Clear;
    for Item in FSelectedConverters do
    begin
      ConverterListBox.Items.Add( Item.name );
    end;
    ConverterListBox.ItemIndex := FSelectedConverters.IndexOf( FSelectedConverter );
  finally
    ConverterListBox.Items.EndUpdate;
  end;
end;

{ TCountry }

constructor TCountry.Create( const ACountryCode: Integer; const AName: string );
begin
  inherited Create;
  FCountryCode := ACountryCode;
  FName := AName;
end;

{ TConverter }

constructor TConverter.Create( const ACountryCode: Integer; const AName: string );
begin
  inherited Create;
  FCountryCode := ACountryCode;
  FName := AName;
end;

end.
Angehängte Dateien
Dateityp: zip dp_185336.zip (878,7 KB, 6x aufgerufen)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
qiLy4n

Registriert seit: 1. Jun 2015
Ort: MV / Germany
22 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Durch ListBox1-Auswahl ListBox2-Auswahlmöglichkeiten festlegen

  Alt 2. Jun 2015, 16:33
Danke für die Hilfe.

Sorry, ich kenne absolut keinen der Befehle, hab aber das Grundprinzip verstanden und erkannt.

Ich werd in der Schule gucken, ob meine Methode irgendwie funktioniert. Ansonsten muss ich wohl diesen Code kopieren. Wenn ich ihn bis dahin völlig durchschaut habe, brauch ich vllt doch kein so schlechtes Gewissen zu haben
  Mit Zitat antworten Zitat
qiLy4n

Registriert seit: 1. Jun 2015
Ort: MV / Germany
22 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Durch ListBox1-Auswahl ListBox2-Auswahlmöglichkeiten festlegen

  Alt 2. Jun 2015, 16:37
Übrigens: Nein, leider ist meinem Lehrer so etwas nicht klar. Sonst hätte er uns sicherlich auch etwas mehr beibringen bzw erklären können oder gleich auf unsere Idee entsprechend reagiert...
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Durch ListBox1-Auswahl ListBox2-Auswahlmöglichkeiten festlegen

  Alt 2. Jun 2015, 16:47
Ich glaube sowieso mittlerweile dass jeder der mal einen 3-tägigen Anfängerkurs im Programmieren in der VHS absolviert hat Informatiklehrer werden kann.
90% aller Informatiklehrer die ich hatte (sowohl in der Oberstufe als auch in meiner Ausbildung) oder von denen ich gehört habe scheinen tatsächlich nicht mehr zu können bzw. haben oft sogar weniger Ahnung von was sie reden als ihre Schüler

Ich kann nur hoffen dass sich das irgendwann mit den zukünftigen Generationen ändern wird und vor allem, dass die Lehrer anderer Fachbereiche kompetenter sind
(was nicht so einfach zu beurteilen ist wenn man von dem Fachbereich nicht schon vorher Ahnung hatte...)
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
qiLy4n

Registriert seit: 1. Jun 2015
Ort: MV / Germany
22 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Durch ListBox1-Auswahl ListBox2-Auswahlmöglichkeiten festlegen

  Alt 6. Jun 2015, 10:36
Hi und danke nochmal für die Antworten.

Habe es letztendlich doch durch weiteres Suchen herausgefunden, wie ich das Problem mit meinem 'Können' beheben kann.

Code:
case ComboBox1.ItemIndex of
      0: begin
         ComboBox3.Items.Clear;
         ComboBox3.Items.Add('m');
         ComboBox3.Items.Add('km');
         end;

      1: begin
         ComboBox3.Items.Clear;
         ComboBox3.Items.Add('x');
         ComboBox3.Items.Add('y');
         end;
Eigentlich simple af.

Thread kann geschlossen werden

Geändert von qiLy4n ( 6. Jun 2015 um 10:41 Uhr)
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#6

AW: Durch ListBox1-Auswahl ListBox2-Auswahlmöglichkeiten festlegen

  Alt 6. Jun 2015, 10:44
Habe es letztendlich doch durch weiteres Suchen herausgefunden, wie ich das Problem mit meinem 'Können' beheben kann.

Code:
case ComboBox1.ItemIndex of
      0: begin
         ComboBox3.Items.Clear;
         ComboBox3.Items.Add('m');
         ComboBox3.Items.Add('km');
         end;

      1: begin
         ComboBox3.Items.Clear;
         ComboBox3.Items.Add('x');
         ComboBox3.Items.Add('y');
         end;
Das ist doch genau das, was Mikkey Dir in Post #2 nahegelegt hat.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
qiLy4n

Registriert seit: 1. Jun 2015
Ort: MV / Germany
22 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Durch ListBox1-Auswahl ListBox2-Auswahlmöglichkeiten festlegen

  Alt 6. Jun 2015, 13:13
Ja, dieses Konzept hatte ich auch, ich konnte seinen Vorschlag bloß nicht verwenden können, da ich es auf meinem Niveau umsetzen musste.
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 07:46 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