![]() |
Panel
ich versuche derzeit durch verschiedene Schlagwörter in einem Editfeld verschiedene Panels zu öffnen.
komme aber nicht so recht vorran weil ich den anfang nicht so hinbekomme. hat für mich jemand einen rat. |
Re: Panel
Genauere Beschreibung würd vielleicht helfen!
|
Re: Panel
os sorry
jups, im edit feld soll beispielsweise blume eingegeben werden und es soll das erkennen und ein Panel aufmachen. das gleiche für eingabe bei tieger hier nur dann das Panel2 aufmachen. bei eingabe von luft ist halt kein panel offen. jedoch bei eingabe von wasser dann das panel3 ich hoffe jetzt ist die beschreibung besser |
Re: Panel
Hi!
Wäre dann nicht vllt. eine ComboBox mit den möglichen "Eingaben" sinnvoller? Grüße, Frederic |
Re: Panel
da ich haber mehrere Artikelsorten habe wird die Combo warscheinlich zu lang :-(
|
Re: Panel
Hallo,
vieleicht hilft dir ja folgendes..
Delphi-Quellcode:
Die IF/Else Anweisung musst du dir anpassen wie du es brauchst. Du könntest auch mal nach Case und so schauen. Und wenn Du feste Werte hast, wie 'Blume', 'Tiger' etc. solltest Du mal das mit der ComboBox bedenken.if Edit1.text = 'Blume' then Panel1.Visible := true else Panel1.Visible := false; Ich hoffe es hilft Dir. Gruß Jens |
Re: Panel
Hi!
Dann solltest du dir überlegen, vllt. besser zu strukturieren - also z.B. Warengruppen - dafür dann eine CB und dann für den jeweiligen Inhalt wieder eine. Weil ein solches IF-Konstrukt wird auch ziemlich lang.... Grüße, Frederic |
Re: Panel
Zitat:
Delphi-Quellcode:
Aber die ComboBox wäre auch in meinen Augen die geeignetere Variante, die o.a. Lösung ist nicht sonderlich fehlertolerant.
Panel1.Visible := AnsiLowerCase(Edit1.text) = 'blume';
|
Re: Panel
Hallo,
warum nicht einfach so:
Delphi-Quellcode:
Der Vorteil dabei von lowercase ist, dass man nicht auf die Groß-/Kleinschreibung bei der Eingabe achten muss.
var
S: String; begin //Text auslesen und Kleinbuchstaben daraus machen S := lowercase(Edit1.Text); Panel1.Visible := S = 'blume'; Panel2.Visible := S = 'tiger'; Panel3.Visible := S = 'wasser'; end; |
Re: Panel
Zitat:
|
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);
|
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] |
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 |
Re: Panel
ich habe das wir gesagt damals mit integern gemacht. ob es nun mit strings geht habe ich nimals ausprobiert.
|
Re: Panel
Zitat:
Delphi-Quellcode:
Im Label1 ist alles klein bis auf die letzten drei zeichen, im zweiten Label alles klein.
procedure TForm1.Button1Click(Sender: TObject);
const S = 'Das ist ein Text mit üöäßÄÜÖ'; begin Label1.Caption := LowerCase(S); Label2.Caption := AnsiLowerCase(S); end; Ist das der Grund für AnsilowerCase? |
Re: Panel
Japp, das hatte ich gemeint.
|
Re: Panel
man kann ja auch den string wieder in zahlen umschreiben dann geht es ;)
|
Re: Panel
|
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. |
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; |
DP-Maintenance
Dieses Thema wurde von "mkinzler" von "Programmieren allgemein" nach "VCL / WinForms / Controls" verschoben.
Geht um Delphi |
Re: Panel
ups mit so einer resonanz habe ich nicht gerechnet.
also ich habe eine Artikeldatenbank die ich hiner eine dat-datei speicher. Abteilung 100, Hose, 1x, Preis 15.00, jetzt wollte ich die datenbank erweitern Abteilung 100, Hose, farbe rot, größe 31/32 ,1x Preis 15.00 die zusätzichen angaben wollte ich in einem Panel bei bedarf einblenden lassen. |
Re: Panel
@DeddyH: Schöne Methode für die Visibility! So elegant hatte ich sie grad nicht im Kopf :)
|
Re: Panel
Naja ich benutze meinen Quelltext auch ein wenig anders. Benutze nur den aufruf mit der Nummer und dann habe ich das Panel welches so meiner Nummer Passt. Und wenn ich ein Neues Panel einfüge mächte schreibe ich es einfach mit der nächsten zuortnungszahl rein.
Aber mal eine andere Frage wieso benutzen die schweizer in Helmi's Beispiel 2 das Result als anscheinende variable ? Hätte immer gedacht, dass das Result(Ergebnis) nur zur Rückmeldung an den Sender benutzt werden kann. |
Re: Panel
Okay, dann hast du ein ganz grundlegendes Konzeptproblem. Du brauchst nur ein einziges Panel, und packst dort immer nur die Daten des jeweils gewählten Artikels rein. U.U. lohnt sich hier auch der Umstieg auf eine richtige DB, so dass man den Komfort von SQL genießen kann.
Edit: Result ist nicht viel anders als eine lokale Variable, nur dass diese an EAX gebunden ist (bei primitiven Typen). Der Aufrufer einer Methode erwartet die Rückgabe in EAX, aber innerhalb der Methode kann damit ganz normal gearbeitet werden. |
Re: Panel
an die db hatte ich schon gedacht, jedoch kam ich bei der installation mit der weitergabe der Interbase nicht weiter
und konnte so nicht mit der datenbank komunizieren. also habe ich das ganze in dat aufgebaut. ich bin noch gespannt wie die verarbeitung bei großeren datenmängen wird. wie zum beispiel bei der Suche oder bei der analyse |
Re: Panel
Liste der Anhänge anzeigen (Anzahl: 2)
ich gebei euch mal hier mein beispiel
an dem ich gerade mein problem versuche vieleicht habt ihr ja eine lösung für mich |
Re: Panel
Interbase ist ziemlich antiquiert, und sollte in neuen Projekten keine Rolle spielen. Die bei der Weitergabe komfortabelsten DBs sind embedded Varianten wie z.B. von Firebird. Eine andere gute, und für den nicht-kommerziellen Einsatz freie DB ist auch MySQL, wobei diese separat installiert werden muss. DB <> Interbase, viel mehr ist (war) Interbase eine von ziemlich vielen Möglichkeiten.
Strukturierte Dateien sind für kleinere Datenaufkommen bis eine Hand voll hundert Sätzen und ohne komplexe Operationen sicherlich noch zu vertreten, bei dir scheint mir ein halbwegs ordentliches DBMS aber schon recht angemessen. Allein schon weil man über SQL Abfragen so manche Dinge erheblich viel kürzer und eleganter erreichen kann als über handgecodetes Datengeschaufel. Schon nur dafür würde ich eine kleine embedded DB jederzeit strukturierten Dateien vorziehen. Eine andere Möglichkeit wären u.U. auch noch XML Dateien, die sich mit entsprechenden Providern datenbankähnlich behandeln lassen. Ich bin persönlich zwar kein großer Freund von XML als "Lösung für alles", aber hier wird's dann schon langsam zur Geschmacksfrage (zumindest in diesem Beispiel). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:09 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