Letzte Eingaben einer Textbox

Hallo Alex,

oh, oh, ich hab zwar keine Ahnung, aber ich muß da doch Widerworte geben :smile:

mal eine Zwischenfrage eines VB-Unkundigen, du sagst Historie
in einer .txt o.ä. zu speichern wäre nicht gut, besser in der
Registry.

So Makaber es klingen mag. Aber du muesstest ansonsten vorher
prüfen ob genuegend Speicherplatz vorhanden ist und ob es das
File schon gibt. Auch kann das File dann durch fragmentierung
zerstört werden, weshalb ich lieber zu Registry greife!

Die Registry besteht aus user.dat und system.dat.
Wenn müßtest du auch bei Registry Einträgen prüfen ob da genug Platz ist um diese zu erweitern.

Und da es sich Um Dateien handelt könnten sie auch durch fragmentierung zerstört sein, wobei das Blödsinn ist, Fragmentierung zerstört keine Dateinen, sie werden zerstört durch Lesefehler der Bytes der Datei oder dadurch das in der FAT ein falscher Eintrag steht (NTFS kenne ich nicht)

Ein

anderer Aspekt ist es sicher, das der Zugriff auf die Registry
auch einfacher und mit weniger Code zu realisieren ist :smile:

Mir nicht klar warum ein Zugriff auf eine Textdatei oder auf Bytes innerhalb einer exe mehr Code braucht.

Aber jeder hat da eine andere Meinung und wie du weisst führen
viele Wege nach Rom :smile:

Jepp, aber da ich keine Ahnung habe wollte ich halt deinen Weg wissen.:smile:

Und Rom, jetzt grad wegen Ostern, hab so tolle Filme wiedergesehen, morgen zieh ich mir gleich so ne Rüstung an, schwing mein Schwert und reite gegen Rom und metzle da alles, befrei die Sklaven, stürz den Cäsar und noch so Sachen *kicher*

Frostern
Reinhard

Und wegen der Weitergabe einer mit VB erstellten Exe, gibt es
da Möglichkeiten die Historie in der Exe mitzugeben.

Ja klar. Du kannst das File dann entweder seperat mit
ausliefern oder die Daten in eine Resource packen. Aber was
für ein Sinn sollte das haben? Wenn du das möchtest und da
sich die History ja aendert, so koenntest du sagen wir mal 10
Adressen auch direkt im Programm Code hinterlegen :smile:

So als Laie stelle ich mir das so vor, du legst in der Exe
eine Variable/Const Dummy an, in der wird die Historie
geparkt, beim Start bzw. wenn die TextBox/ComboBox geöffnet
wird sie ausgelesen und die Daten sind verfügbar.

Richtig, sofern man die Daten im Source hinterlegt und nicht
mit Resourcen arbeitet :smile:

D.h. keine Textdatei in der die Daten stehen, auch nicht in
der Registry, sondern sie stehen in der exe selbst.

Genau :smile:

Geht das überhaupt. Und wenn ja, was spricht dafür oder
dagegen, daß so zu tun?

Dagegen spricht fast garnichts, ausser „Warum willst du eine
History beim ausliefern eines Programmes irgendwo
hinterlegen?“
Hier stellt sich die Problematik, das wenn der User das proggi
nutzt und sich Daten ansammeln für die History, er dann das
progg schliesst und erneut startet das dann eben „diese“
History wieder da ist. Ähnlich wie die RecentFiles :wink: Dazu
muss man sie irgendwo abspeichern!
Das wiederrum kann man in dem Falle nur in einem seperaten
File oder halt der Registry machen :smile:

MfG Alex

Mein Schleppi bootet nicht mehr, Reapraturversuche sind im
Moment nicht mögklich, weil das CD-Laufwerk schon lange defekt
ist … Ich sitze hier an einem IMac und warte auf bessere
Zeiten.

Hallo Rainer,

Tut mir leid was dir geschah :frowning:
Ostern war irgendwie Hardwarmäßig nicht so toll, mein Bildschirm hat sich verabschiedet, zum Glück hatte ich noch einen zweiten.

Aber ich bin neugierig, dein VB läuft auf dem iMAC nicht!?
D.h. für mich ich muß die Frage stellen, gibt es VB das auf einem Mac läuft?

Oder andersrum, wenn du VB-Code entwickelst, wie stellst du sicher daß der Code auch läuft wenn das BS nicht Windows ist?

Frostern
Reinhard

Hallo Reinhard,

Tut mir leid was dir geschah :frowning:

danke!

Ostern war irgendwie Hardwarmäßig nicht so toll, mein
Bildschirm hat sich verabschiedet, zum Glück hatte ich noch
einen zweiten.

Das ist auch nicht gerade ein Grund zum Feiern.

Aber ich bin neugierig, dein VB läuft auf dem iMAC nicht!?

Nein. MacOSX setzt auf Unix auf …

D.h. für mich ich muß die Frage stellen, gibt es VB das auf
einem Mac läuft?

Nein.

Oder andersrum, wenn du VB-Code entwickelst, wie stellst du
sicher daß der Code auch läuft wenn das BS nicht Windows ist?

Gar nicht. Ich entwickle keine VB-Code. :frowning:

OK, gleich bin ich im Büro und da gibt es ja Pausen … :smile:
… und auch VB6. Aber privat, wenn ich Zeit habe geht bis auf Weiteres nichts.

Gruß, Rainer

Hallo Alex,

werde mich mal mit der Combobox beschäftigen.

Gruß
Gunter

Hallo Gunther,

warum eine Listbox? Dann vielleicht noch ein oder ausblenden
bei Bedarf? Dann noch ein Button mit einem Pfeil der dir die
Liste sichtbar macht? Aber so machst du dir das Leben nur
schwer :confused:

Das alles bietet Dir die Combobox!

Hallo Alex,

das mit der Combobox funktioniert bestens.
Alles läuft wie gewünscht inklusive lesen und schreiben in die Registry.
Ich weiss bloß nicht so recht was der beste Schlüssel für die Registry ist. Benutze jetzt:

With Combo1
For n = 0 To Combo1.ListCount - 1
Eingabe = .List(n)
SaveSetting App.Title, „Content“, „Combo1_“ & n, Eingabe
Next n

Gruß
Gunter

Hallo Gunther,

warum eine Listbox? Dann vielleicht noch ein oder ausblenden
bei Bedarf? Dann noch ein Button mit einem Pfeil der dir die
Liste sichtbar macht? Aber so machst du dir das Leben nur
schwer :confused:

Das alles bietet Dir die Combobox!

Hallo Gunter,

das mit der Combobox funktioniert bestens.
Alles läuft wie gewünscht inklusive lesen und schreiben in die
Registry.
Ich weiss bloß nicht so recht was der beste Schlüssel für die
Registry ist. Benutze jetzt:

With Combo1
For n = 0 To Combo1.ListCount - 1
Eingabe = .List(n)
SaveSetting App.Title, „Content“, „Combo1_“ & n, Eingabe
Next n

Gruß
Gunter

Na das ist doch schon einmal ein Anfang :smile: Dennoch würde ich wenn das so nicht lassen! Denn gehen wir mal von aus. In der Combobox wird En eingegeben. In der History stehen 10 Eintraege! 1 Davon beginnt mit EN dann würde dieser nur angezeigt werden, was auch erwuenscht ist. Aber beendet man dann das proggi, so wird nur dieser 1 Eintrag gespeichert!

Ich hatte mich gestern mal hingesetzt und kurz was angefangen zu tippeln. Eigentlich fehlt nur noch eine Kleinigkeit dazu. Mal sehen, wenn ich es schaffe dann mache ich das heute mal fertig und poste dir den Source und die Anleitung zum Bau dazu. Schaue dir das dann mal an und gebe mal eine Info was dann daran noch anderes gemacht werden soll :smile:

MfG Alex

PS: Das mit dem speichern in der registry ist soweit OK! Warum willst du einen anderen Pfad vorgeben?

Hallo Reinhard,

oh, oh, ich hab zwar keine Ahnung, aber ich muß da doch
Widerworte geben :smile:

Na dann bin ich mal gespannt :wink:

Die Registry besteht aus user.dat und system.dat.
Wenn müßtest du auch bei Registry Einträgen prüfen ob da genug
Platz ist um diese zu erweitern.

Das ist richtig. Dennoch werden diese beiden Daten von Windows verwaltet. Legst du ein File an, so musst du dich selber darum kuemmern :wink: Also warum die Arbeit nicht das OS machen lassen ?

Und da es sich Um Dateien handelt könnten sie auch durch
fragmentierung zerstört sein, wobei das Blödsinn ist,
Fragmentierung zerstört keine Dateinen, sie werden zerstört
durch Lesefehler der Bytes der Datei oder dadurch das in der
FAT ein falscher Eintrag steht (NTFS kenne ich nicht)

Ja ok, da habe ich mich etwas umstaendlich ausgedrueckt. Aber vom Prinzip her meinte ich das selbe!

Ein
anderer Aspekt ist es sicher, das der Zugriff auf die Registry
auch einfacher und mit weniger Code zu realisieren ist :smile:

Mir nicht klar warum ein Zugriff auf eine Textdatei oder auf
Bytes innerhalb einer exe mehr Code braucht.

Unter VB, alle Daten unter dem Schluessel X auszulesen, bedarf es genau eine Zeile! (GetallSettings)
Hast du ein File sind es ein paar mehr :wink:

Aber jeder hat da eine andere Meinung und wie du weisst führen
viele Wege nach Rom :smile:

Jepp, aber da ich keine Ahnung habe wollte ich halt deinen Weg
wissen.:smile:

Naja den kennst du ja nun :wink:

MfG Alex

Noch mehr OT
Hallo Alex,

danke für deine Antwort.

Ich frage dich mal was, ist zwar an sich eine Anschlußfrage an eine Beitragsfolge mit Rainer, aber er ist in Trauer, so wie der eine römische Caesar rief „Varus, gib mir meine Legionen zurück“ wird Rainer sein imac-Teil an die Wand schmeißen und rufen „Ich will mein VB zurück“ :smile:))

Jedenfalls sagte Rainer, auf einem Mac läuft kein VB.

Nun weiß ich das es Excel für Mac gibt und ich gehe davon aus daß dann auch das Excel-Vba auf dem Mac läuft.
Da ja Excel-Vba nur eine Teilmenge plus paar Extras von VB ist und es auf einem Mac funktioniert *annehm*, verstehe ich nicht warum da Vb nicht läuft.

Nehmen wir jetzt mal an, es gibt 500.000 Mac Besitzer in D, wenn davon nur 3 % je 1000€ für ein VB auf einem Mac ausgeben würden, so wären das 15 Millionen Euro.
Also bilden wir ein Trio, ihr beide schreibt VB so um daß es auf einem Mac läuft, ich kümmere mich um den Rest.
Und zu Lizensgebühren für VB oder andere lästige Formaltäten sagt mein neuer Kumpel Igor von www.russenmafia.ru: njet, keine Probleme (okay, kostet 100.000)

Und (15 Millionen-100.000)/3 ist schon ein Anreiz für eine Auftragsprogrammierung *find* :smile:

Natürlich könnt ihr das Ding auch ohne mich durchziehen, Igor meint dazu: Kein Problem (10.000 €) *gg*

Gruß
Reinhard

Hallo Alex,

das habe ich nicht so richtig verstanden.

Beim Start des Programms lese ich die Einträge der Registry.
Nehmen wir an 5 Stück. Die stehen dann in der ComboBox.
Nun tippe ich noch 2 dazu. Folglich werden jetzt 7 Einträge wieder zurückgeschrieben. Das ist doch O.K.

Was ich noch nicht geschafft habe, ist das Schreiben in die Registry, wenn ich das Programm über das rote X beende (Fenster schließen). Welchen Event wird da ausgeführt?

Gruß
Gunter

Na das ist doch schon einmal ein Anfang :smile: Dennoch würde ich
wenn das so nicht lassen! Denn gehen wir mal von aus. In der
Combobox wird En eingegeben. In der History stehen 10
Eintraege! 1 Davon beginnt mit EN dann würde dieser nur
angezeigt werden, was auch erwuenscht ist. Aber beendet man
dann das proggi, so wird nur dieser 1 Eintrag gespeichert!

Ich hatte mich gestern mal hingesetzt und kurz was angefangen
zu tippeln. Eigentlich fehlt nur noch eine Kleinigkeit dazu.
Mal sehen, wenn ich es schaffe dann mache ich das heute mal
fertig und poste dir den Source und die Anleitung zum Bau
dazu. Schaue dir das dann mal an und gebe mal eine Info was
dann daran noch anderes gemacht werden soll :smile:

MfG Alex

PS: Das mit dem speichern in der registry ist soweit OK! Warum
willst du einen anderen Pfad vorgeben?

Hallo Reinhard,

Ich frage dich mal was, ist zwar an sich eine Anschlußfrage an
eine Beitragsfolge mit Rainer, aber er ist in Trauer, so wie
der eine römische Caesar rief „Varus, gib mir meine Legionen
zurück“ wird Rainer sein imac-Teil an die Wand schmeißen und
rufen „Ich will mein VB zurück“ :smile:))

*gg* In der Firma läuft es ja noch, nur privat für ein paar Wochen nicht. :smile:

Jedenfalls sagte Rainer, auf einem Mac läuft kein VB.

Nicht ohne Windows-Emulation. Einen Emulator habe ich noch nicht ausprobiert, der Rechner ist nur geliehen, ich will nicht alles umbauen …

Nun weiß ich das es Excel für Mac gibt und ich gehe davon aus
daß dann auch das Excel-Vba auf dem Mac läuft.

Da bin ich nicht sicher. Wenn ja, dann aber in veränderter Form. Einiges kann nicht wie in Windows funktionieren.

Da ja Excel-Vba nur eine Teilmenge plus paar Extras von VB ist
und es auf einem Mac funktioniert *annehm*, verstehe ich nicht
warum da Vb nicht läuft.

Weil VB eng mit Windows verknüpft ist. Lösch mal die User32.DLL … :smile:

Nehmen wir jetzt mal an, es gibt 500.000 Mac Besitzer in D,
wenn davon nur 3 % je 1000€ für ein VB auf einem Mac ausgeben
würden

Darauf würde ich schon nicht wetten. :smile:

Aber ‚umschreiben‘ würde in keinem Fall funktionieren, weil VB ja einige DLLs verwendet. Die gibt es im Unix alle nicht.
Einfacher wäre es, in C und Assembler ein neues VB für Mac zu schreiben, weil von dem Vorhandenen eh nichts übrig bleibt.

Gruß, Rainer

Was ich noch nicht geschafft habe, ist das Schreiben in die
Registry, wenn ich das Programm über das rote X beende
(Fenster schließen). Welchen Event wird da ausgeführt?

Hallo Gunter,

direkt kann ich dir nicht helfen, aber ich habe irgendwo VB A -Code der eine Form ohne das Schließkreuz erzeugt.
Ich glaube das geht über API, also müßte man das nach VB umschreiben können.
Damit ist das Problem Schließkreuz umgangen, Beenden der Form geht dann nur noch über eine entsprechende Schaltfläche in der Form und da kannst du ja kontrollieren was beim Beenden geschehen soll.

Soll ich nach dem Code kramen?

Gruß
Reinhard

Hi Gunter,

Was ich noch nicht geschafft habe, ist das Schreiben in die
Registry, wenn ich das Programm über das rote X beende
(Fenster schließen). Welchen Event wird da ausgeführt?

Form_QueryUnload

Gruß, Rainer

Hallo Rainer,

alles klar, danke.

Gruß
Gunter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Rainhard,

danke, aber der Rainer konnte mir da schon helfen mit:

Form_QueryUnload

Gruß
Gunter

Hallo Gunter,

direkt kann ich dir nicht helfen, aber ich habe irgendwo
VB A -Code der eine Form ohne das
Schließkreuz erzeugt.
Ich glaube das geht über API, also müßte man das nach VB
umschreiben können.
Damit ist das Problem Schließkreuz umgangen, Beenden der Form
geht dann nur noch über eine entsprechende Schaltfläche in der
Form und da kannst du ja kontrollieren was beim Beenden
geschehen soll.

Soll ich nach dem Code kramen?

Gruß
Reinhard

Hallo Gunter,

Beim Start des Programms lese ich die Einträge der Registry.
Nehmen wir an 5 Stück. Die stehen dann in der ComboBox.
Nun tippe ich noch 2 dazu. Folglich werden jetzt 7 Einträge
wieder zurückgeschrieben. Das ist doch O.K.

Ja ok. Aber beim MIE ist es doch so, das wenn nehmen wir mal an.
In der Combobox steht

Alex
Reinhard
Rainer
Peter

Ist die Eingabezeile der Combobox leer! So siehst du alle Eintraege!
Steht in der Combobox (Als Text) nur ein A, so steht dann in der Combobox folglich nur Alex. Steht in der Combox ( Als Text) Ein R, so steht dann in der Combobox demzufolge Reinhard und Rainer :smile:
So wolltest du das doch oder?

Aber lange Rede, kurzer Sinn :smile:
Erstelle dir mal fix eine Form. Platziere darauf eine Combobox (Combo1). Dann kopiere Dir mal folgenden Source in die Form und starte mal das Proggi. Schau dir das mal an und sage mal bescheid ob du es so haben wolltest :smile:
Bedenke aber das am Anfang noch keine Eintraege vorhanden sind. Einfach mal ein paar reinschreiben und dann die Form beenden. Wenn du sie dann neu startest, sollten sie drinnen stehen :smile:

Option Explicit

Private Declare Function SendMessage Lib "user32" Alias \_
 "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, \_
 ByVal wParam As Long, ByVal lParam As Long) As Long

Private MyData() As String
Private Pfad As String
Private Change As Boolean

Private Sub Combo1\_Change()
 If Change Then RefreshCombo (CBool(Len(Combo1.Text) = 0))
End Sub

Private Sub RefreshCombo(Status As Boolean) 'Combobox aktualisieren
Dim i As Integer
Dim OldTxt As String
OldTxt = Combo1.Text
Combo1.Clear
 For i = LBound(MyData) To UBound(MyData)
 If Status Then
 If MyData(i) "" Then Combo1.AddItem (MyData(i))
 Else
 If InStr(1, MyData(i), OldTxt, vbTextCompare) = 1 Then Combo1.AddItem (MyData(i))
 End If
 Next i
 Change = False
 Combo1.Text = OldTxt
 Combo1.SelStart = Len(Combo1.Text)
 Change = True
 If Combo1.ListCount \> 0 Then SendMessage Combo1.hwnd, &H14F, True, 0
 Me.Refresh
End Sub

Private Sub Combo1\_KeyPress(KeyAscii As Integer) 'Wir fragen das Enter ab und tragen die Daten ein!
Dim i As Integer
 If KeyAscii = 13 And Trim(Combo1.Text) "" Then
 If Not Exist Then
 For i = UBound(MyData) - 1 To LBound(MyData) Step -1
 MyData(i + 1) = MyData(i)
 Next i
 MyData(0) = Combo1.Text
 End If
 End If
End Sub

Private Function Exist() As Boolean 'Existiert ein Eintrag schon?
Dim i As Byte
For i = LBound(MyData) To UBound(MyData)
 If LCase(Combo1.Text) = LCase(Combo1.List(i)) Then
 Exist = True
 Exit Function
 End If
Next i
End Function

Private Sub Form\_Load()
 ReDim MyData(9) As String 'Wir erstellen ein Array. Hier kannst du die Grösse des Array's angeben. 9 = 10 Eintraege da er bei 0 beginnt mit zaehlen :wink:
 Pfad = "Gunter" 'App.ProductName 'Hat dein Project einen Namen, so kannst du App.Productname verwenden :wink:
 Call LoadData
End Sub

Private Sub SaveData() 'Daten in der Registry speichern
Dim i As Integer
On Error Resume Next
DeleteSetting Pfad, "History"
For i = LBound(MyData) To UBound(MyData)
 SaveSetting Pfad, "History", "History" & CStr(i), MyData(i)
Next i
End Sub

Private Sub LoadData() 'Daten aus der Registry holen
Dim vRet As Variant
Dim i As Integer
vRet = GetAllSettings(Pfad, "History")
If IsEmpty(vRet) Then Exit Sub
For i = UBound(vRet) To 0 Step -1
 MyData(UBound(vRet) - i) = CStr(vRet(i, 1))
Next i
Call RefreshCombo(True)
End Sub


Private Sub Form\_QueryUnload(Cancel As Integer, UnloadMode As Integer) 'Wir speichern die Daten
 Call SaveData
End Sub

Sollte Dir irgendwas am Source unklar sein, so sage einfach bescheid oder ob du da was anderes haben magst :smile:

MfG Alex

Hallo Alex,

so komfortabel wollte ich es eigentlich gar nicht, aber ich habe einiges dazugelernt.

Ich habe den Eintrag in die Combox erst beim ENTER gemacht und die Historie nur beim Anklicken des Pfeiles angezeigt. Der letzt Eintrag
steht bei mir immer ganz oben.

Was mich bei deiner Version etwas stört ist, dass wenn ich einen neuen Eintrag mache und dann auf die Pfeiltsate gehe, nur den letzten Eintrag sehe.

An sonsten gefällt mir deine Lösung sehr gut.

Vielen Dank für deine Mühe.

Gruß
Gunter

Sollte Dir irgendwas am Source unklar sein, so sage einfach
bescheid oder ob du da was anderes haben magst :smile:

MfG Alex

Hallo Gunter,

so komfortabel wollte ich es eigentlich gar nicht, aber ich
habe einiges dazugelernt.

Ach naja Komfortable nenne ich das noch nicht :wink: Dazu muesste man noch mehr implementieren :smile:

Ich habe den Eintrag in die Combox erst beim ENTER gemacht und
die Historie nur beim Anklicken des Pfeiles angezeigt. Der
letzt Eintrag
steht bei mir immer ganz oben.

Also der Eintrag in die History sowie in die Combobox, sollte eigentlich auch erst nach einem erfolgten Enter passieren :smile:
Wie du sicherlich gemerkt hast, arbeite ich intern mit einem Array!
Dieses lese ich zum Start ein und arbeite dann nur mit dem Array. Beim beenden wird dann das Array in die Registry geschrieben :smile:
Speichern tue ich die Eintraege in der Folge.

Sind 10 Eintraege vorhanden, so wird der 10 Eintrag gelöscht und alle Eintraege um 1 nach hinten geschoben. Der neue Eintrag wird dann an die 1 Stelle geschrieben! Nun wird die Combobox gelöscht und wieder gefuellt anhand des Array! Da der neue Eintrag nun an erster Stelle steht! Steht er Ergo auch in der Combobox an erster Stelle. Willst du das nicht, so aendere die Schleife einfach ab, indem du das Array von Oben nach Unten durchläufst :smile:

For i=ubound(MyArray) to lbound(MyArray)

Was mich bei deiner Version etwas stört ist, dass wenn ich
einen neuen Eintrag mache und dann auf die Pfeiltsate gehe,
nur den letzten Eintrag sehe.

Das ruehrt daher, das in der Combobox der neu eingetragene Text steht. Dieser wird dann im Array gesucht und in der Combobox angezeigt!

Wie möchtest du es nun haben?

1:Sollen prinzipiell alle Eintraege angezeigt werden, wenn auf den Pfeil geklickt wird

2:Nur wenn ein neuer Eintrag hinzugekommen ist?

Zu Fall 1: Mache dich einfach dem Klickereignis zu nutze.
Speichere dort einfach die Eingabe in einer Variablen. Lösche danach den Text, via Combo1.Text="". Dann sollte automatisch RefreshCombo aufgerufen werden und alle Daten werden eingetragen. Danach setze das Flag „Change“ auf False (glaub) und schreibe den Text der in der Variablen steht wieder in die Combobox. Durch das Flag wird die Combobox nicht automatisch aktualisiert. Danach setze das Flag „Change“ wieder auf True, damit spätere Änderungen sichtbar werden :smile:

Zu Fall 2:

Dazu mache dich dem Ereignis KeyPress zu nutze und da den ASCII Code 13, welchen ich schon verwendet habe. Lasse dort einfach die Routinen laufen die drinnen stehen. Danach gehe vor wie im Fall 1 :smile:

Wie du siehst kannst du die Aenderung sehr schnell implementieren :smile:

Vielen Dank für deine Mühe.

Nichts zu danken :smile: War ja net viel Arbeit und schnell getippselt :smile:

MfG Alex

Hallo Alex,

habe die Version 1 versucht, das klappt aber nicht, da das Klickereignis nicht durchlaufen wird, wenn man die Pfeiltaste betätigt.

Gruß
Gunter

1:Sollen prinzipiell alle Eintraege angezeigt werden, wenn auf
den Pfeil geklickt wird

Zu Fall 1: Mache dich einfach dem Klickereignis zu nutze.
Speichere dort einfach die Eingabe in einer Variablen. Lösche
danach den Text, via Combo1.Text="". Dann sollte automatisch
RefreshCombo aufgerufen werden und alle Daten werden
eingetragen. Danach setze das Flag „Change“ auf False (glaub)
und schreibe den Text der in der Variablen steht wieder in die
Combobox. Durch das Flag wird die Combobox nicht automatisch
aktualisiert. Danach setze das Flag „Change“ wieder auf True,
damit spätere Änderungen sichtbar werden :smile:

Hallo Gunter,

habe die Version 1 versucht, das klappt aber nicht, da das
Klickereignis nicht durchlaufen wird, wenn man die Pfeiltaste
betätigt.

Hm, ok ich dachte das das Click Ereignis ausgelöst wird. Aber da dies nicht der Fall ist, muessen wir einen anderen Weg gehen :smile:
Sobald sich die Combobox aufklappt, so wird das DropDown Ereignis aufgerufen! Nutze dies anstatt des Klick Ereignisses :smile:
Danach passe einfach den Code an und dann sollte es deinen Wünschen entsprechen :smile:
Ich hoffe nur das ich keinen Denkfehler habe. Aber selbst wenn dann schaue ich nochmal drueber und korrigiere es dann :smile:

Aber by the Way. Das was du vorhast, koennte sicher in vielen Anwendungen zu tragen kommen. Verstehst du nun warum ich da lieber zu einem Steuerelement neige? Lieber einmal sich Gedanken machen und den Source tippseln und dann einfach nur noch via Drag and Drop verwenden, als jedesmal alles neu zu schreiben oder darauf zu verzichten :smile:

MfG Alex

1 Like

Hm, ok ich dachte das das Click Ereignis ausgelöst wird. Aber
da dies nicht der Fall ist, muessen wir einen anderen Weg
gehen :smile:
Sobald sich die Combobox aufklappt, so wird das DropDown
Ereignis aufgerufen! Nutze dies anstatt des Klick Ereignisses

Hallo Alex,

so funktioniert es.
Vielen Dank.

Gruß Gunter