Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Memofelder Zählen


neuling321 - Fr 13.05.16 15:07
Titel: Memofelder Zählen
Hallo

Ich bin blutiger Anfänger bei Delphi.
Ich habe ein Programm in dem es 3 Memofelder gibt, diese Felder möchte ich
prüfen, ob sie nicht leer sind.
Dies möchte ich über eine Schleife machen.

Ich habe aber überhaut kein Ansatz, wie ich das mit einer schleife realisieren soll.
Die Schleife soll erkennen wie viele Memofelder es gibt, den Namen auslesen und dann
prüfen ob in dem Memofeld was drin steht.

Danke


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Fr 13.05.2016 um 20:37


Schafschaf - Fr 13.05.16 15:31

Versteh ich jetz nicht ganz, gibt es immer 3 Memofelder oder kann der Benutzer beliebig viele (oder bis zu 3) Memofelder erstellen?


Delphi-Laie - Fr 13.05.16 20:55

Wenn es drei Memofelder (TMemo?) gibt und das feststeht, müssen diese nicht gezählt werden. Anderenfalls muß die Menge der Controls iteriert und dabei deren Typen ermittelt werden. Das dürfte für einen "blutigen Anfänger" deutlich zu heftig sein.

Mit einer Schleife bei 3 Memofeldern ist das auch so eine Sache. Der Zugriff darauf klappt nur, wenn diese - z.B. wie bei der automatischen Benennung - fortlaufend numeriert werden. Und dann muß man Findcomponent verwenden. Auch zu anspruchsvoll für den Einstieg.

Nur beim Prüfen auf Inhalt ist es einfacher: Es müßte eine Eigenschaft "Memo1.Lines.Count" (oder so ähnlich) geben, die man (aus-)lesen kann.


Delete - Fr 13.05.16 21:25

- Nachträglich durch die Entwickler-Ecke gelöscht -


neuling321 - Sa 14.05.16 16:00

Hallo

Vielen Dank für die Antworten,
@Frühlingsrolle

Leider funktioniert das bei mir nicht, ich bekomme den Fehler "Undeklarierter Bezeichner ControlCount"
Ich habe die Controls aber eingebunden, bzw war sie als vcl.controls schon unter uses vorhanden.
Kannst Du mir da noch mal helfen.


Danke

Ich weiss das man die drei Memofelder nicht extra zählen muss, da sie ja feststehen, aber vielleicht braucht man das
mal wann anders und dann weiss man es wie es geht :-)
Habe die Zeile nun so geschrieben:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
function checkmemo():string;
var
           i: integer;
  nameofmemo: string;
begin
  for i := 0 to form1.ControlCount -1 do
  begin
    if form1.Controls[i] is TMemo then
    begin
      nameofmemo := TMemo(form1.Controls[i]).Name;
      showmessage(nameofmemo);
    end;

  end;
end;


Nun bekomme ich keine Fehler mehr, allerdings findet die Schleife auch kein Memofeld :-(


Delete - Sa 14.05.16 17:51

- Nachträglich durch die Entwickler-Ecke gelöscht -