TListBox.Selectfirst

Für Fragen von Einsteigern und Programmieranfängern...

TListBox.Selectfirst

Beitragvon AlterMann » 25. Dez 2009, 16:06 TListBox.Selectfirst

Hallo

Ich habe ein merkwürdiges Phänomen:
Ich habe eine Variable namens AktiveLade vom Typ TListBox.
Gebe ich im Quelltext AktiveLade. ein und warte (wie ich es hier im Forum gelehrt wurde 8) ) erscheint als mögliche Auswahl u.a. SelectFirst.
Versuche ich die Procedure AktiveLade.Selectfirst jedoch auzurufen meckert der Compiler und behauptet: Error: identifier idents no member "SelectFirst"

hier die ganze Routine, vielleicht ist da ein Fehler zu erkennen:

Code: Alles auswählen
procedure TForm1.Button5Click(Sender: TObject);//Einzeln Entnehmen
 
var i, schondrin : word;
    AktiveLade : TlistBox;
    ALText : string;
 
begin
 for i:=0 to PageControl1.ActivePage.ControlCount-1 do
  if PageControl1.ActivePage.Controls[i] is TListBox then
    begin
     AktiveLade := TlistBox(PageControl1.ActivePage.Controls[i]);
     If (AktiveLade.GetSelectedText<> '') then
      begin
       ALText := Anzahlabschneiden(AktiveLade.GetSelectedText);
       schondrin := Anzahlextrahieren(AktiveLade.GetSelectedText);
      end;
    end;
 
 If (AktiveLade.GetSelectedText<> '') and (schondrin = 1) then
  begin
    AktiveLade.Items.Delete(AktiveLade.ItemIndex);
   AktiveLade.SelectFirst;
  end
   else
    If (AktiveLade.GetSelectedText<> '') then
    begin
     AktiveLade.Items.Delete(AktiveLade.ItemIndex);
     AktiveLade.Items.Add(Anzahlanfuegen(ALText,schondrin-1));
    end;
end;


Danke für die Aufmerksamkeit.
Früher war alles besser. Und aus Holz!
AlterMann
 
Beiträge: 201
Registriert: 13. Dez 2009, 09:43
Wohnort: Niederösterreich
OS, Lazarus, FPC: Win7prof 64bit - Lazarus 1.6 r51630 FPC 3.0.0 i386-win32-win32/win64 | 
CPU-Target: x86 64Bit
Nach oben

Beitragvon theo » 25. Dez 2009, 17:11 Re: TListBox.Selectfirst

Diese Option sollte nicht angezeigt werden. Ist wohl ein Fehler. Das hätte aber sowieso nicht gemacht, was du wahrsch. wolltest.

Probier mal so:
if AktiveLade.Items.Count>0 then AktiveLade.Selected[0]:=true;
theo
 
Beiträge: 8064
Registriert: 11. Sep 2006, 18:01

Beitragvon AlterMann » 25. Dez 2009, 17:20 Re: TListBox.Selectfirst

theo hat geschrieben:if AktiveLade.Items.Count>0 then AktiveLade.Selected[0]:=true;


Das funktioniert prächtig! (Wie immer, wenn Du was vorschlägst :P )

Nur zum Verständnis:
Warum sollte die Procedure nicht angezeigt werden bzw. bemäkelt sie der Compiler obwohl sie doch von TWinControl vererbt sein müßte?
Wieso meinst Du, hätte die Procedure nicht gemacht was ich wollte?

Ehrlich gesagt ich finde mich recht schwer in dem Dschungel aus Funktionen/Proceduren/und Properties zurecht.
Immer wenn ich denke ich hätte das System dahinter ein bißchen durchschaut, ist's wieder (ein bißchen) anders ... :cry:

Danke vielmals für Deine Hilfe.
Früher war alles besser. Und aus Holz!
AlterMann
 
Beiträge: 201
Registriert: 13. Dez 2009, 09:43
Wohnort: Niederösterreich
OS, Lazarus, FPC: Win7prof 64bit - Lazarus 1.6 r51630 FPC 3.0.0 i386-win32-win32/win64 | 
CPU-Target: x86 64Bit
Nach oben

Beitragvon theo » 25. Dez 2009, 17:26 Re: TListBox.Selectfirst

AlterMann hat geschrieben:Warum sollte die Procedure nicht angezeigt werden bzw. bemäkelt sie der Compiler obwohl sie doch von TWinControl vererbt sein müßte?

Weil sie dort unter "protected" steht, also nur in abgeleiteten Klassen verwendet werden kann (weshalb der Compiler auch meckert)

AlterMann hat geschrieben:Wieso meinst Du, hätte die Procedure nicht gemacht was ich wollte?

Weil sie in TWinControl steht. TWinControl als Vorfahr weiss nichts von deinen TListBox.Items, kann als nicht das tun was du erwartest.

http://lazarus-ccr.sourceforge.net/docs ... first.html
theo
 
Beiträge: 8064
Registriert: 11. Sep 2006, 18:01

Beitragvon AlterMann » 25. Dez 2009, 18:58 Re: TListBox.Selectfirst

theo hat geschrieben:Weil sie dort unter "protected" steht, also nur in abgeleiteten Klassen verwendet werden kann (weshalb der Compiler auch meckert)


Heißt das innerhalb einer Methode von TListBox könnte ich selectfirst aufrufen? (Wofür auch immer.)
theo hat geschrieben:Weil sie in TWinControl steht. TWinControl als Vorfahr weiss nichts von deinen TListBox.Items, kann als nicht das tun was du erwartest.


Das hätte ich mir eigentlich denken sollen ...

Danke schön.
Früher war alles besser. Und aus Holz!
AlterMann
 
Beiträge: 201
Registriert: 13. Dez 2009, 09:43
Wohnort: Niederösterreich
OS, Lazarus, FPC: Win7prof 64bit - Lazarus 1.6 r51630 FPC 3.0.0 i386-win32-win32/win64 | 
CPU-Target: x86 64Bit
Nach oben

Beitragvon theo » 25. Dez 2009, 20:03 Re: TListBox.Selectfirst

AlterMann hat geschrieben:Heißt das innerhalb einer Methode von TListBox könnte ich selectfirst aufrufen? (Wofür auch immer.)


Dafür würde private reichen. protected Methoden kann man in abgeleiteten Klassen verwenden.
z.B. TMyListBox=class(TListBox) etc..

Der Bug ist übrigens bekannt:
http://bugs.freepascal.org/view.php?id=14499
theo
 
Beiträge: 8064
Registriert: 11. Sep 2006, 18:01

• Themenende •

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried