Templates by BIGtheme NET
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
  • Seite:
  • 1
  • 2

THEMA:

Listenansicht_Spalten befüllen 18 Mär 2023 20:39 #1

  • daywalker
  • daywalkers Avatar Autor
  • Offline
  • Platinum Boarder
  • Platinum Boarder
  • Beiträge: 779
  • Dank erhalten: 587
Hallo lieber Stefan
In dem beigefügten Skript werden 3 Listen nacheinander erstellt,
Liste 1: Alle verfügbaren Comobjekte einer Excel Applikation
Liste 2: Die Typenliste (also ob Methode oder Eigenschaft)
Liste3: Eine etwas umfangreichere Liste sog. Definitionen-

So, nun würde ich gerne Liste1 in Spalte 1, Liste 2 in Spalte 2 sowie Liste 3 in Spalte 3 der Listenansicht darstellen.
Mir gelingt dies mit dem Eintragslistenassistent leider nicht. Wenn nur ein Eintrag in 'weitere Spalten' drinnen steht
läuft das Skript zwar aber alles steht in Spalte 1 . Ansonsten, wenn bei 'weitere Spalten' ein zweiter Eintrag vorhanden = Fehlermeldung.
Oder übersehe ich da etwas.

cX4Web cX4Web Code

Was ist das?

1 *** Excel_Comobject_Methoden_Eigenschaften auslesen.¶¶Im ersten Schritt werden ab Zeile 2 bis 5 die verfügbaren OLE oder COM Objektnamen ausgelesen,¶dann durch einen Stapel geschickt und in einem Meldungsfenster dargestellt, wie die erste Liste aussieht.¶¶
2 Starte Powershell.exe '-NoLogo', warten bis beendet, Konsole, sende '$ExcelObj = New-Object -comobject Excel.Application ¶$ExcelObj | Get-Member | Select -ExpandProperty Name ¶exit', Empfang in [Name], verborgen
3 Setze in [cX.Stapel(Name).Liste]: '[Name]'
4 Setze in [cX.Stapel(Name).Entfernen]: 'PS?C*'
5 Meldung '[cX.Stapel(Name).Liste]', Titel 'Comobjekte EXCEL Namen', Buttons 'Nur OK', Symbol 'Information'
6 *** Excel_Comobject_¶Hier werden nun die Objekttype(Methode oder Eigenschaft) pro Objektname ausgelesen und dann durch einen Stapel geschickt und in einem Meldungsfenster dargestellt.¶Liste 2 fertig.¶¶
7 Starte Powershell.exe '-NoLogo', warten bis beendet, Konsole, sende '$ExcelObj = New-Object -comobject Excel.Application ¶$ExcelObj | Get-Member | Select -ExpandProperty Membertype¶exit', Empfang in [Membertype], verborgen
8 Setze in [cX.Stapel(Membertype).Liste]: '[Membertype]'
9 Setze in [cX.Stapel(Membertype).Entfernen]: 'PS?C*'
10 Meldung '[cX.Stapel(Membertype).Liste]', Titel 'Comobjekte EXCEL Typen', Buttons 'Nur OK', Symbol 'Information'
11 *** Excel_Comobject_¶Hier werden nun die Definitionen pro Objektname ausgelesen und dann durch einen Stapel geschickt und in einem Meldungsfenster dargestellt.¶Liste 3 fertig.¶¶
12 Starte Powershell.exe '-NoLogo', warten bis beendet, Konsole, sende '$ExcelObj = New-Object -comobject Excel.Application ¶$ExcelObj | Get-Member | Select -ExpandProperty Definition¶exit', Empfang in [Definition], verborgen
13 Setze in [cX.Stapel(Definition).Liste]: '[Definition]'
14 Setze in [cX.Stapel(Definition).Entfernen]: 'PS?C*'
15 Meldung '[cX.Stapel(Definition).Liste]', Titel 'Comobjekte EXCEL Definitionen', Buttons 'Nur OK', Symbol 'Information'
16 Anzeige-Fenster 'Das Excel Combobjekt', ID='hauptfenster', Rahmen: veränderbar Werkzeugfenster
17 *** Hier in dieser Listenansicht sollen nun jede einzelne Liste in einer Spalte dargestellt werden.¶So der Plan.
18 Listenansicht Typ 'Details', Spalten 'Name¶Type¶Definition', Inhalt '[cX.Stapel(Name).Liste];;;;;[cX.Stapel(Membertype).Liste];[cX.Stapel(Definition).Liste]' (ID='Listenansicht_1', Zielfenster='hauptfenster', Docking: ausfüllen)
19 Setze in [.Listenansicht(Listenansicht_1).AutoSpaltenbreite]: '-1'
20 Warte Endlos (Warten auf zu behandelnde Ereignisse)

cX4Web Code: Einfach anklicken zum Kopieren und in click.EXE 5.0 einfügen


  (20 Zeilen, cX 5.0.10.1, Lizenz: Erweiterte Anzeige-Elemente, Pro)


lg Christian

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von daywalker.

Listenansicht_Spalten befüllen 19 Mär 2023 11:57 #2

  • Stefan
  • Stefans Avatar
  • Offline
  • Administrator
  • Administrator
  • Beiträge: 1127
  • Dank erhalten: 1664
Hallo, Christian!

Wenn du Listen-Platzhalter nebeneinander setzt, werden diese Listen natürlich nicht in Spalten aufgteilt und nebeneinander gesetzt, sondern die Platzhalter einer nach dem anderen ersetzt. Schau' dir bitte einfach mal das Ergebnis dieser Listenansicht-Inhaltszeile an - so kann das nicht gehen mit dem Befüllen.

Um Listen nebeneinander zu setzen muss man eher etwas tricksen oder halt mit Listenansicht.SpalteFüllen() arbeiten - wobei du ja schon entdeckt hattest (anderer Post), dass dieser Platzhalter (noch) nicht implementiert ist, aber schon in der Doku existiert. Ups - Sorry, wird nachgeholt!

Übrigens könnte für deine Zwecke der Umweg über Powershell eigentlich auch vermieden und der OLEObjekt-Befehl verwendet werden - dazu gibt es doch m.E. auch Beispiele, oder?

Liebe Grüße
Stefan
 

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Listenansicht_Spalten befüllen 19 Mär 2023 17:51 #3

  • daywalker
  • daywalkers Avatar Autor
  • Offline
  • Platinum Boarder
  • Platinum Boarder
  • Beiträge: 779
  • Dank erhalten: 587
Hallo Stefan. Natürlich möchte ich in erster Linie die Clickexe Befehle benutzen. Aber ich brauche immer vorher ein paar Infos. Wie bspw. die verfügbaren Comobjekte von Excel.
Die Powershell dient mir hier quasi als Infodatenbank. Der nächste Schritt ist nun wie ich das mit dem Ole Objekt Befehl auch so umsetzen kann . Du erinnerst dich an meinen Versuch mit der BrowseforFolder Methode aus dem Shell Applikation Objekt? Ich brauche das um gewisse Dinge zu verstehen und zum ausprobieren. 😉 LG Christian 

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Listenansicht_Spalten befüllen 19 Mär 2023 21:05 #4

  • daywalker
  • daywalkers Avatar Autor
  • Offline
  • Platinum Boarder
  • Platinum Boarder
  • Beiträge: 779
  • Dank erhalten: 587
Hallo lieber Stefan.

In dem Kontext habe ich noch versucht mit einer Spezialschleife die Spalte 1 einer Listenansicht zu befüllen.

Zeile 11 (cX.Anzeige.Listenansicht.Eintrag.Text) und 12 (cX.Anzeige.Listenansicht.Zelle) zeitigen bei mir leider kein Ergebnis.

cX4Web cX4Web Code

Was ist das?

1 *** Listenansicht befüllen
2 Starte Powershell.exe '-NoLogo', warten bis beendet, Konsole, sende '$ExcelObj = New-Object -comobject Excel.Application ¶$ExcelObj | Get-Member | Select -ExpandProperty Name ¶exit', Empfang in [Name], verborgen
3 Setze in [cX.Stapel(Name).Liste]: '[Name]'
4 Setze in [cX.Stapel(Name).Entfernen]: 'PS?C*'
5 Anzeige-Fenster 'Das Excel Combobjekt', ID='hauptfenster', Rahmen: veränderbar Werkzeugfenster
6 *** Hier in dieser Listenansicht soll nun mit der untenstehenden Spezialschleife Spalte 1 befüllt werden.
7 Listenansicht Typ 'Details', Spalten 'Name¶Type¶Definition' (ID='Listenansicht_1', Zielfenster='hauptfenster', Docking: ausfüllen)
8 Schleife ab hier mit Variable [objnamen] über Liste: '[cX.Stapel(Name).Liste]'
9 Warte Pause, Dauer 200ms
(10 Setze in [cX.Anzeige(hauptfenster).Titel]: '[objnamen] [i++]'
(11 Setze in [cX.Anzeige(hauptfenster).Listenansicht(Listenansicht_1).Eintrag([i++];Name).Text]: '[objnamen]'
12 Setze in [cX.Anzeige(hauptfenster).Listenansicht(Listenansicht_1).Zelle([i++];Name)]: '[objnamen]'
13 Schleife bis hier
14 Setze in [.Listenansicht(Listenansicht_1).AutoSpaltenbreite]: '-1'
15 Warte Endlos (Warten auf zu behandelnde Ereignisse)

cX4Web Code: Einfach anklicken zum Kopieren und in click.EXE 5.0 einfügen


  (15 Zeilen, cX 5.0.10.1, Lizenz: Erweiterte Anzeige-Elemente, Pro)


lg Christian

 

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Listenansicht_Spalten befüllen 20 Mär 2023 10:12 #5

  • daywalker
  • daywalkers Avatar Autor
  • Offline
  • Platinum Boarder
  • Platinum Boarder
  • Beiträge: 779
  • Dank erhalten: 587
Hallo lieber Stefan.

Ich füge hier in dem Kontext noch einmal ein paar Skriptzeilen ein die den 'OLEObjekt' Befehl betreffen. Ich habe in Zeile 3 (ist auskommentiert) des Skriptes, wieder den 'Starte Befehl' in Verbindung mit der Powershell hergenommen um einen Vergleich zu haben. In Zeile 10 gelingt es mir nicht auf dieses eine Tabellenblatt zuzugreifen sowie in Zeile 3 bei den Konsoleneingaben. Ich tappe auch bei der Parametrierung 'OLEObjekt Befehls' z.B bei .Range("A1:C4").font.size=18 (Schriftgrösse 18 in den Zellen A1 bis C4) oder
bspw .Cells(1;1)="Frau Holle" (In Zelle(Zeile,Spalte in diesem Fall Zelle A1 soll "Frau Holle" eingetragen werden) völlig im Dunklen. Als Zusatzantwort auf Deine Frage warum ich die Powershell verwende.

Hättest Du da eventuell ein kleines Beispiel. lieber Stefan, wie das umzusetzen wäre und ob das überhaupt mit dem OLE Objektbefehl möglich ist?


cX4Web Code: Einfach anklicken zum Kopieren und in click.EXE 5.0 einfügen


  (12 Zeilen, cX 5.0.10.1, Lizenz: Pro)

Vielen Dank und lg Christian

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von daywalker.

Listenansicht_Spalten befüllen 20 Mär 2023 11:57 #6

  • Stefan
  • Stefans Avatar
  • Offline
  • Administrator
  • Administrator
  • Beiträge: 1127
  • Dank erhalten: 1664
Hallo, Christian!

Deine Versuche, in .Text oder .Zelle einer nicht existierenden Zeile zuzugreifen, schlagen natürlich fehl - diese Anweisungen sind nur für vorhandene Zeilen gedacht.
Da wäre schon besser, eine Zeile hinzuzufügen...!
Außerdem ist das mit dem i++ schon raffiniert gemacht, aber du musst i auch erstmal auf 1 setzen, sonst wird anfangs Zeile "" bzw. 0 versucht.

Ansonsten: Bitte setze weitere Beiträge, die mit dem ursprünglichen Thema nix mehr zu tun haben (OLEObjekt), in ein eigenes Thema, damit das zuzuordnen ist (und sinnvoll beantwortet werden kann), ja? Ist ja nicht wirklich "in diesem Kontext".
Sonst haben wir hier Äpfel und Birnen drin - Obstsalat...

Deine Fragen zum OLEObjekt schaue ich mir aber mal an - ist ja zugegebenermaßen auch kniffelig...

Liebe Grüße
Stefan
 
Folgende Benutzer bedankten sich: daywalker

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Seite:
  • 1
  • 2

Community

Wir benutzen Cookies

Wir nutzen Cookies auf unserer Website. Diese Cookies sind essenziell für den Betrieb dieser Website. Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.

Sie sind noch nicht Mitglied unserer Community? Melden Sie sich jetzt an!

Anmelden