Autor Beitrag
johannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: So 06.10.02 14:00 
Liebe Forenmitglieder,

habe in einem Formular 2 ListViews.

Nun selektiere ich in einem LV einen Eintrag.
Möchte nun den Namen des ListViews zurück bekommen in den
ich den Eintrag selektiert habe.

Habe in der Hilfe , in verschiedenen Foren (suchen !) und in verschiedenen
Tutorials gesucht , ohne Ergebnis.

Möglicherweise weiß jemand von Euch wie dies geht?


Vielen Dank

Johannes
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 06.10.02 15:10 
ShowMessage(Listview1.Name);
johannes Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: So 06.10.02 23:59 
Hallo Luckie,

vielen Dank für deine Antwort.

Die Name Eigenschaft war mir bekannt.

Wenn ich in dem OnClick Ereignis des ListViews den Namen möchte
z.Bs.so,
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TfrmLmwEquipmentauswahl.LV_OG_Gr_neuClick(Sender: TObject);
var
  a : String;
  LV : TListView;
begin
  LV := (Sender As TListView);
  a := LV.Name;
  ShowMessage(a);
end;


kein Problem , klappt super.

Bei einem Button Ereignis klappt die nicht.

MfG


johannes

(07.10.02 00:33 Tino) Code-Tags hinzugefügt.
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mo 07.10.02 00:37 
johannes hat folgendes geschrieben:
Bei einem Button Ereignis klappt die nicht.

Beim dem Parameter Sender handelt es sich immer (meistens) um das Objekt welches das Event ausgelöst hat. Also beim OnClick-Event der ListView zeigt der Parameter Sender auf das ListView. Wenn Du nun aber die Procedure LC_OG_Gr_neuClick dem OnClick-Event des Buttons zuweist und du nun auf den Button klickt zeigt der Parameter Sender nicht mehr auf die ListView sondern auf den Button weil der Button das Event auslöst. Also kann der Code nicht funktionieren. Was willst Du denn jetzt genau beim Klick auf den Button wissen?

Gruß
TINO
johannes Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Mo 07.10.02 08:49 
Hallo Tino,
vielen Dank für die schnelle Antwort und deine Mühe.

Möchte den Namen des ListViews wissen in dem ich einen Eintrag
selektiert habe , damit ich ihn in einer Variablen weiterverarbeiten kann.

Ist dies möglich?

Vielen Dank und mit freundlichen Grüßen

johannes
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mo 07.10.02 10:31 
Hallo Johannes,

mit der Eigenschaft Selected kannst Du prüfen ob in einer ListView ein Eintrag ausgewählt wurde:
ausblenden Quelltext
1:
2:
3:
4:
If ListView1.Selected <> nil Then
  { In der ListView1 ist ein Eintrag markiert }
Else
  { In der ListView1 ist kein Eintrag markiert }

Gruß
TINO
johannes Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Mo 07.10.02 11:42 
Hallo Tino,
das Problem ist , dass ich den Namen des ListViews brauche.

Bei ListView1.Selected <> nil ist ListView1 ja bekannt.

Klar , ich habe die ListView erstellt und weiß logischerweise den Namen.
Weil ich in dem Form jedoch mehrere LV habe brauche ich den jeweiligen
Namen des LV, bei einem ButtonClick wo ich einen Eintrag mit der Maus
selektiert habe.

Möchte aber nicht nerven , sorry.

Vielleicht ist dies auch gar nicht möglich.

Gruß

Johannes
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mo 07.10.02 11:58 
Hallo,

ich verstehe nicht so ganz was Dein Ziel ist. Beschreibe doch mal was Du damit erreichen willst und was der User mit dem Form erreichen kann. Ich denke da gibt es eventl. einen anderen Lösungsweg.

Gruß
TINO
johannes Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Mo 07.10.02 14:08 
Hallo Tino,
Hier kurz was ich machen möchte, hoffe es kurz und verständlich rüberzubringen (gar nicht so einfach). 4 LV’s befinden sich in einer GroupBox , sie heißen LV1,LV2.....

Mit einem Button möchte ich nun Datensätze einlesen oder erneut einlesen wen sich an den Daten was geändert hat. Diese Proc liest aus einer Datenbank Datensätze in ein ListView ein.
ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
procedure p_Item_einlesen;
var
Item:TListItem;
sSQL : String;
begin
Screen.Cursor := crHourglass;
with frmLmwEquipmentauswahl do
begin
        with DataModule1.qryTasks_OG_neu do
        begin
                Active := False;
                sSQL := 'SELECT * FROM T_Obergruppen';
                SQL.Text := sSQL;
                Active := True;

                        First;
                        while not Eof do
                        begin
                                 ***********************************
// hier möchte ich je nach dem, in was für ein LV ich einlesen will duch eine
// Variable bestimmen was für ein LV gemeint ist. Das Problem ist wahrscheinlich
// dass es sich hier um ein Object handelt ( Object.Items.Add ).
                                Item := ListView1.Items.Add;
             //Item := Variable.Items.Add
                                 ************************************
                                        if FieldValues['OG_Name_deu'] <> null then
                                        begin
                                                Item.Caption := (FieldValues['OG_ID']);
                                                Item.SubItems.Add(FieldValues['OG_Name_deu']);
                                        end;
                        Next;
                        end;
        end;
end;
Screen.Cursor := crDefault;
end;

Hoffe es ist nicht zu lang für das Forum.
Grüße johannes

(07.10.02 18:30 Tino) Code-Tags hinzugefügt.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 07.10.02 14:42 
Im Prinzip müßtest du alle Listviews durchgehen und kucken in welchem etwas selektiert ist und dann den ausgeben, in dem etwas selektiert ist. Das Problem ist nur, dass in mehrere LV's gleichzeitig etwas selektiert sein kann.

Ich denke, es wäre einfacher, wenn du dir was anderes einfallen läßt.
johannes Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Mo 07.10.02 15:44 
Hi,
danke für die Antwort.

Viele Wege führen nach Rom.
Laß mir was anderes einfallen.

gruß johannes
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 07.10.02 15:58 
Hi!

Kannst Du nicht im OnSelect-Ereignis jedes ListView in einer globalen Variable seinen Namen speichern lassen. Diese globale Variable enthielte dann aber immer nur den Namen des LV, indem zuletzt etwas selektiert wurde. Dann kannst Du doch über FindComponent diese ListView ansprechen.

Oder aber, du gehst alle Komponenten mit Components[i] durch, prüfst, ob sie LV sind und dann, ob etwas selektiert ist. Wenn ja, liest Du den Namen aus und führts Deine Aktionen aus.

MfG,
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 07.10.02 16:47 
Der erste Vorschlag ist brauchbar, der zweite weniger, siehe mein Posting.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 07.10.02 17:20 
Sorry, habe das Ganze nur überflogen.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".