Autor Beitrag
Trialtom
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Mi 20.11.02 22:52 
Hallo,

Der Anwender meines Programm kann per Wunsch Datenbanken erstellen, die unter einem Namen abgespeichert werden. Diesen Namen lasse ich im Formular auch anzeigen, es erstellt einen Label, der anklickbar ist und dann auf die gewünschte Datenbank verweist.
Beim Hinzufügen einer Datenbank wird wiederum der neue Name erstellt und erscheint im Programm (auf dem Bildschirm) - FormCreate(Form1); ---> ein befehl der alle Namen die es gibt auf dem bildschirm auflistet uind somit auch den neuen. Aber beim Löschen funktioniert dieser befehl nicht und der name bleib immer noch angezeigt. wenn ich aber vorher ein rechteck zeichne zum beispiel an der stelle wo der name war, geht es, ist auch klar. aber dann habe ich komische linien, die ich nicht will. ich finde einfach keinen refresh befehl, der mir das programm wie neu startet und den alten namen bei der löschung auch verschwinden lässt.
Könnt ihr mir helfen?
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mi 20.11.02 23:35 
Trialtom hat folgendes geschrieben:
Könnt ihr mir helfen?

Wenn ich ehrlich bin... ich nicht! Ich habe nämlich kein Wort verstanden.

Trialtom hat folgendes geschrieben:
Diesen Namen lasse ich im Formular auch anzeigen, es erstellt einen Label, der anklickbar ist und dann auf die gewünschte Datenbank verweist.

Warum erstellst Du ein Label welches anklickbar ist? Wie wäre es mit einer Listbox?
Trialtom hat folgendes geschrieben:
Beim Hinzufügen einer Datenbank wird wiederum der neue Name erstellt

Also genau das gleiche Prinzip wie oben schon beschrieben, oder?
Trialtom hat folgendes geschrieben:
und erscheint im Programm (auf dem Bildschirm) - FormCreate(Form1); ---> ein befehl der alle Namen die es gibt auf dem bildschirm auflistet uind somit auch den neuen.

Bitte noch mal genau erklären :nixweiss:

Würde Dir gernen genauere Lösungen geben aber leider... wie schon oben gepostet: verstehen ich fast keinen Satz!

Gruß
TINO
Trialtom Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Mi 20.11.02 23:58 
ok, sorry wenn es nicht verständlich war.
na ok: ich versuche es leicht verständlich zu machen.

bei jedem start des formulars (oder form1.oncreate....), werden labels erstellt, die aus einer memo geladen werde, welche die namen enthält, die in einer textdatei gespeichert sind.
wenn der anwender ein neuen namen erstellen will, klickt er einen button, jetzt wird der memo, bzw. der textdatei der neue name hinzugefügt und ees wird das formular neu gestartet (oncreate), wo jetzt wieder alle labels geladen werden, die in der memo enthalten sind. jetzt also mit dem neuen name. dieses label ist anklickbar, weil ich gerne möchte das wenn man den namen anklickt man in ein anderes formular kommt. eine listbox macht sich für mich hier nicht gut, weil man nix anklicken kann und die zeile nur blau betont wird. die namen die neu erstellt worden oder schon erstellt worden sind werden untereinander aufgelistet. erstellt man einen neuen namen, so erscheint er als neuer label unter den letzten label (namen). ich hoffe bis hier hin ist es verständlich!
ich habe noch einen anderen button mit dem man einen namen löschen kann. löscht man nun den namen, so löscht man den namen auch aus der memo und aus der textdatei und das formular wird wieder neu gestartet (oncreate). aber nix hat sich auf dem formular verändert, der name steht noch da obwohl er ja nicht mehr existiert. das hat den grund, da die bildfläche oder das formular nicht "aktualisiert" wurde. es ist wie im internet explorer, man guckt sich seine homepage an, lässt die seite offen, lädt was hoch (updated sie), guckt sich die seite wieder an und nix hat sich verändert. dann klickt man Aktualisieren oder Refresh, jenachdem welche sprache man eingestellt hat und die überarbeiteten daten erscheinen...
wie in dem program.
so nun meine frage: gibt es einen befehl mit dem man das formular "aktualisieren" kann?

ich hoffe ich werde jetzt verstanden und ihr wisst was ich meine. ich konnte mich noch nie gut ausdrücken, aufsätze waren nie mein ding. mathe und physik, fremdsprachen, etc. sprechen mir eher zu, aber nicht die meine muttersprache :-D

tschau und danke, das ihr euch die mühe gemacht habt, meinen langen text durchzulesen :)
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 21.11.02 00:17 
Trialtom hat folgendes geschrieben:
ok, sorry wenn es nicht verständlich war.
na ok: ich versuche es leicht verständlich zu machen.

Dann hoffen wir mal das beste.
Zitat:

bei jedem start des formulars (oder form1.oncreate....), werden labels erstellt, die aus einer memo geladen werde, welche die namen enthält, die in einer textdatei gespeichert sind.

Ok. Verstanden.
Zitat:

wenn der anwender ein neuen namen erstellen will, klickt er einen button, jetzt wird der memo, bzw. der textdatei der neue name hinzugefügt und ees wird das formular neu gestartet (oncreate), wo jetzt wieder alle labels geladen werden, die in der memo enthalten sind. jetzt also mit dem neuen name.

Hm.
Zitat:

dieses label ist anklickbar, weil ich gerne möchte das wenn man den namen anklickt man in ein anderes formular kommt. eine listbox macht sich für mich hier nicht gut, weil man nix anklicken kann und die zeile nur blau betont wird.

Komisch meine Listbox hat aber ein OnClick-Ereignis.
Zitat:

die namen die neu erstellt worden oder schon erstellt worden sind werden untereinander aufgelistet. erstellt man einen neuen namen, so erscheint er als neuer label unter den letzten label (namen). ich hoffe bis hier hin ist es verständlich!

Hast du. Und dein Vorhaben schreit immer lauter nach einer Listbox.
Zitat:

ich habe noch einen anderen button mit dem man einen namen löschen kann. löscht man nun den namen, so löscht man den namen auch aus der memo und aus der textdatei und das formular wird wieder neu gestartet (oncreate).

Gleich muß ich mir die Ohren zuhalten.
Zitat:

aber nix hat sich auf dem formular verändert, der name steht noch da obwohl er ja nicht mehr existiert. das hat den grund, da die bildfläche oder das formular nicht "aktualisiert" wurde. es ist wie im internet explorer, man guckt sich seine homepage an, lässt die seite offen, lädt was hoch (updated sie), guckt sich die seite wieder an und nix hat sich verändert. dann klickt man Aktualisieren oder Refresh, jenachdem welche sprache man eingestellt hat und die überarbeiteten daten erscheinen...
wie in dem program.

All das hättest du nicht, wenn du das passende Kontroll zu deiner Aufgabestellung nehmen würdest.
Zitat:

so nun meine frage: gibt es einen befehl mit dem man das formular "aktualisieren" kann?

Ich weigere mich darauf zu Antworten. Nachher macht man mich dafür verantwortlich, dass ich so was unterstützt habe.
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Do 21.11.02 00:30 
Hi :)

nachdem mir Luckie eben mal kurz und knapp erklärt hat was du wohl machen willst... *g* mal mein Lösungsvorschlag :)

Also, nehmen wir an in der Memo/Textdatei sind 5 einträge...

als erstes mal eine Globale Variable
ausblenden Quelltext
1:
2:
var
  Labels: Array of TLabel;


jetzt eine funktion in der die Labels erstellt werden...
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure CreateLabel;
var
  i: Integer;
begin
[...]
  if Length(Labels)>0 then
    for i:=0 to Length(Labels)-1 do
      Labels[i].Free;
  SetLength(Labels,Memo1.Lines.Count);
  for i:=0 to Length(Labels)-1 do begin
    Labels[i]:=TLabel.Create(Form1);
    Labels[i].Caption:=Memo1.Strings[i];
    Labels[i].Parent:=Form1;
    Labels[i].Top:=i*Labels[i].Height;
    Labels[i].OnClick:=[...]
  end;
[...]
end;


So, und die funktion rufst du nun einmal im OnCreate ereigniss auf, und jedesmal wenn die liste aktualisiert werden soll...

Au'revoir,
Aya
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 21.11.02 00:48 
Ach du meine Güte. Es gibt doch tatsächlich noch Leute die so was unterstützen. Und das auch noch von meiner Freundin.

OK, machen wir einen zwei Zeiler raus.:

ausblenden Quelltext
1:
2:
3:
4:
5:
procedure TForm1.FormCreate(Sender: TObject);
begin
  ListBox1.Clear;                                        // Dieser Code
  Listbox1.Items.LoadFromFile('c:\test.txt');  // kann überall stehen
end;

ausblenden Quelltext
1:
2:
3:
4:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
  ShowMessage(Listbox1.Items.Strings[Listbox1.Itemindex]);
end;
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Do 21.11.02 00:50 
*g* Er wollte aber Labels.. also hab ich ihm Labels gegeben :)

PS: Du willst garnich wissen wie mein aller erstes Programm damals aussah... *gg* ListBox? Was ist das? ;)
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 21.11.02 00:55 
Aya hat folgendes geschrieben:
*g* Er wollte aber Labels.. also hab ich ihm Labels gegeben :)

Aber nur weil er sich die Hilfe zur Listbox nicht richtig angekuckt hat.
Zitat:

eine listbox macht sich für mich hier nicht gut, weil man nix anklicken kann
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Do 21.11.02 00:58 
Luckieleinchen hat folgendes geschrieben:
Aber nur weil er sich die Hilfe zur Listbox nicht richtig angekuckt hat.

Vieleicht gefällt ihm das aussehen der ListBox ja nicht.. und, vieleicht sind ihm die einträge darin zu dicht aneinander, oder sowas... *gg*
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 21.11.02 01:02 
*Grrrr* eine OwnerDraw-Listbox poste ich ihm aber hier jetzt nicht.

Zitat:

Vieleicht gefällt ihm das aussehen der ListBox ja nicht.. und, vieleicht sind ihm die einträge darin zu dicht aneinander, oder sowas... *gg*

Typisch Frau. Keinen Sinn für das Praktische.

Noch nie von Bauhaus gehört:
Zitat:

Form Follows Function.
Oder auch: Der Zweck bestimmt die Form.


Zuletzt bearbeitet von Luckie am Do 21.11.02 01:06, insgesamt 1-mal bearbeitet
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Do 21.11.02 01:05 
Kennen sie wohl... :)
Aber wenn mich jemand dannach fragt wie man das mit Labels macht, sag ich ihm wie man es mit Labels macht...

hätte er gefragt "Wie mach ich das mit Labels, oder gibt es ne bessere methode?" hätte ich ihn auf die ListBox verwiesen...

Au'revoir,
Aya~

PS: Dumme angewohnheit von mir *g* Nur auf das Antworten was gefragt wurde.
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Do 21.11.02 09:20 
Aya hat folgendes geschrieben:
Dumme angewohnheit von mir *g* Nur auf das Antworten was gefragt wurde.

Das ist bestimmt keine dumme Angewohnheit :-D

Aber mit einer ListBox ist einfacher und für den User letztendlich vertrauter und logischer anstatt auf irgendwelche Labels zu klicken! Und wenn ein Programmierer so ein Designfehler verursachen will dann kann man ihn ja darauf hinweisen das sein Lösungsansatz nicht ganz der richtige ist!

Gruß
TINO
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 21.11.02 09:52 
Ich sehe schon, Männer denken doch vernünftiger, in solchen Fällen. :mrgreen: Kleiner Scherz Seiya, nicht übel nehmen. :oops:

Desweiteren: Interface Hall of Shame hier mal kucken, ist echt interessant diese Seite.

Das ganze mit den Lables hat mich an das erinnert:
user defined image
Auch zu finden auf der Seite.
Trialtom Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Do 21.11.02 14:01 
ok eine listbox hat ein OnClick-Ereignis. :idea: darann habe ich im fernsten nicht dran gedacht mhhhh, *pein*
es lohnt sich wirklich eher eine listbox zu nehmen.
danke wie man labels erstellt wusste ich. mhhh immer die sinnlosen dinge, die man vergisst.
na ok
nur interesse halber: gibt es nun ein akutualisierungs-befehl?
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Do 21.11.02 22:39 
Das hat mit Aktualisieren nix zu tun.... du mußt nur bevor du neue Labels machst die alten alle löschen mit .free und ich denke mal das hast du nicht gemacht.
Trialtom Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Fr 22.11.02 08:43 
ok, danke nochmal.