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/)
-   -   Panel (https://www.delphipraxis.net/136297-panel.html)

polarwolf 27. Jun 2009 17:01

Re: Panel
 
Ups ich hab das alles auf integern gemacht damals. aber jetzt sollte es richtig sein

Ich verwalte in der selben Art ein DB Programm von mir. Vieleicht hilft es dir ja weiter.

Delphi-Quellcode:
function TForm1.Panelanzeige(Neuepanel: string):boolean;
begin

  //Das gewünschte Panel anzeigen
  Case Neuepanel of
    'blume': blumepanel.Visible:=true;
    'luft': luftpanel.Visible:=true;
    'wasser': wasserpanel.Visible:=true;
  else
    showmessage('Programmfehler Panel NR '+inttostr(Neuepanelnummer)+' nicht verfügbar.');
    result:=false;
  end;

  //Alle anderen Panel ausschalten
  if Neuepanel <> 'blume' then blumepanel.Visible:=false;
  if Neuepanel <> 'luft' then luftpanel.Visible:=false;
  if Neuepanel <> 'wasser' then wasserpanel.Visible:=false;

  application.ProcessMessages;
  result:=true;
end;

aufgerufen wird es dann so

Delphi-Quellcode:
Panelanzeige(Edit1.text);

DeddyH 27. Jun 2009 17:02

Re: Panel
 
Case mit String? Ich möchte bezweifeln, dass das so geht.

[edit] Das wird immer noch nicht gehen, case funktioniert nur mit ordinalen Datentypen :mrgreen: [/edit]

Jens Hartmann 27. Jun 2009 17:05

Re: Panel
 
Die Frage, wäre ja auch was er genau damit bezwecken will. Oder besser gesagt, was es geben soll. Eventuell das ganze über eine DB zu lösen. Je nachdem wie viel Artikel etc. vorhanden sind.

Gruß Jens

polarwolf 27. Jun 2009 17:05

Re: Panel
 
ich habe das wir gesagt damals mit integern gemacht. ob es nun mit strings geht habe ich nimals ausprobiert.

Helmi 27. Jun 2009 17:07

Re: Panel
 
Zitat:

Zitat von DeddyH
Zitat:

Zitat von Helmi
Der Vorteil dabei von lowercase ist, dass man nicht auf die Groß-/Kleinschreibung bei der Eingabe achten muss.

Und bei AnsiLowercase gilt das sogar für Umlaute :zwinker:

Auch wenns OT ist, ich hab das gerade mal ausprobiert, mit folgenden Code:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
  S = 'Das ist ein Text mit üöäßÄÜÖ';

begin
  Label1.Caption := LowerCase(S);
  Label2.Caption := AnsiLowerCase(S);
end;
Im Label1 ist alles klein bis auf die letzten drei zeichen, im zweiten Label alles klein.
Ist das der Grund für AnsilowerCase?

DeddyH 27. Jun 2009 17:15

Re: Panel
 
Japp, das hatte ich gemeint.

polarwolf 27. Jun 2009 17:18

Re: Panel
 
man kann ja auch den string wieder in zahlen umschreiben dann geht es ;)

Helmi 27. Jun 2009 17:24

Re: Panel
 
Danke Deddy!

Für Case und String haben die Schweizer ein paar Beispiele:

Beispiel 1

Beispiel 2

Medium 27. Jun 2009 17:28

Re: Panel
 
@polarwolf: Mann kann sich auch nen Bein ausreissen und damit golfen. Schmerz und Sinn sind vergleichbar.

Nimm dir ne Combobox, und schmeiss da deine Texte rein. Die sind dann intern als StringList hinterlegt, die u.a. auch die Property Objects hat. Zum Programmstart schmeissz du dir in diese die jeweiligen Referenzen auf die zugehörigen Panels, und dann kannst du nachdem ein Eintrag gewählt wurde einfach über den ItemIndex wieder auf genau das richtige zugreifen und es visible machen. Kein if-Gewürgel, keine Stringveralberung, nur ein mal im OnCreate haufen an Panels in die Objects-Property werfen und fertig.

Btw: ComboBoxen können auto-vervollständigen, so dass der User nichtmals ausklappen muss um einen Eintrag zu wählen. Das ganze ist ja relativ Edit-ähnlich zu bedienen dann.

DeddyH 27. Jun 2009 17:36

Re: Panel
 
:lol:, die selbe Idee hatte ich auch gerade:
Delphi-Quellcode:
procedure TfrmMain.ComboBox1Change(Sender: TObject);
var i: integer;
begin
  for i := 0 to ComboBox1.Items.Count - 1 do
    (ComboBox1.Items.Objects[i] as TPanel).Visible := i = ComboBox1.ItemIndex;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  ComboBox1.Items.AddObject('Blume',Panel1);
  ComboBox1.Items.AddObject('Tiger',Panel2);
  ComboBox1.Items.AddObject('Pinkelpott',Panel3);
  ComboBox1.ItemIndex := 0;
  ComboBox1Change(Sender);
end;


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

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