Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Feldinhalt markieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ]
000
17.05.2005, 11:53 Uhr
Dirk70



Hallo zusammen,

ich habe gerade mein erstes Dialogprogramm geschrieben und bin über folgendes Problem gestolpert: Wenn ich ein Eingabefeld, das bereits einen Inhalt enthält, mit

Code:

pWndNext = GetDlgItem(IDC_FELD);
pWndNext->EnableWindow(true);
GotoDlgCtrl(pWndNext);


aktiviere, kommt es manchmal (habe den Zusammenhang noch nicht gefunden) vor, dass der Cursor am Ende des Feldinhalts steht, so dass bei einer erneuten Eingabe die Zeichen einfach hinten angehängt werden. Mein Auftraggeber möchte aber, dass der Feldinhalt komplett markiert ist (was es in dem meisten Fällen auch tut, aber leider nicht immer), so dass bei einer Neueingabe der alte Inhalt verschwindet.
Kann mir jemand helfen?

Gruß
Dirk
--
Grüße aus dem Saarland
Dirk
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.05.2005, 23:52 Uhr
mmc20
puss in boots


hi, probier doch mal :
C++:
pWndNext = GetDlgItem(IDC_FELD);
pWndNext->EnableWindow(true);
pWndNext->SetSel(0, -1);
pWndNext->SetFocus();


Dieser Post wurde am 17.05.2005 um 23:52 Uhr von mmc20 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.05.2005, 09:43 Uhr
Dirk70



Hallo und Danke für die Antwort! Aber leider kennt der Compiler die Methode nicht

error C2039: 'SetSel' : is not a member of 'CWnd'

Und SetFocus alleine bringt nicht den gewünschten Erfolg. Hat noch wer Vorschläge..?
--
Grüße aus dem Saarland
Dirk
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
18.05.2005, 11:44 Uhr
mmc20
puss in boots


hi, dann caste mal nach "CEdit"

C++:
((CEdit*)pWndNext)->SetSel(0, -1);
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
18.05.2005, 16:53 Uhr
Dirk70



Der Compiler rauscht jetzt zwar durch, aber markiert wird immer noch nix.

Bin im Moment etwas ratlos. Habe zwar eine Vermutung, warum das ursprüngliche Problem überhaupt auftritt (Stichwort: PreTranslateMessage), aber alleine das hier darzulegen, würde mich viel Zeit kosten, die ich leider nicht habe. Ist halt mies, wenn einem ne völlig neue Entwicklungsumgebung vor den Latz geknallt wird, mit der sich kein Mensch in der Firma wirklich auskennt. Ich werde das Programm jetzt einfach mal so einsetzen, vielleicht akzeptieren sie's ja...

Trotzdem Danke für die Hilfe!
--
Grüße aus dem Saarland
Dirk
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
18.05.2005, 23:48 Uhr
mmc20
puss in boots


das einfachste wäre wenn du dem editfeld eine member verpasst (control/CEdit) zb. m_ceEdit, dann funktioniert das auf alle fälle
C++:
m_ceEdit.SetSel(0, -1);
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
24.05.2005, 09:57 Uhr
Dirk70



Hallo nochmal!

Nee klappt nicht, das hatte ich auch schon probiert. Ich hab aber jetzt zumindest ne Erklärung dafür:

Unter Windows CE habe ich mittels PreTranslateMessage für die <Pfeil nach unten>-Taste (VKDOWN) eine individuelle Funktion (Blättern über erfasste Datensätze) programmiert. In fast allen Fällen wird der Feldinhalt auch wie gewünscht markiert, AUSSER beim letzten Satz, wo zusätzlich eine Meldung erscheint, dass nicht mehr weitergeblättert werden kann. Da wird dann stattdessen der Cursor ans Ende des Eingabefeldes gesetzt, was zufälligerweise genau die Standardreaktion auf besagte Taste ist!

Fazit (nach umfangreichen Tests): Ich kann in meiner Funktion so viele SetSels machen, wie ich will, ABER sobald irgendwo AfxMessageBox ins Spiel kommt (egal ob vor oder nach der SetSel-Methode) wird NACH Abschluss der individuellen Behandlung immer die Standardreaktion ausgeführt. Klingt ziemlich verwirrend, und ist auch so.

Wenn ich anschließend, z.B. durch Definition eines Buttons, die SetSel-Methode ausführe, funktioniert sie einwandfrei, nur leider nicht als direkte Folge des VKDOWN-Events in Verbindung mir AfxMessageBox. Das bringt mir aber nix. Ich habe diesen Bug (und nix anderes ist das hier, denn eine Messagebox sollte sich eigentlich immer neutral verhalten) nun akzeptiert und werde versuchen, das Problem auf irgendeinem anderen Weg zu lösen. Weiß nur noch nicht, wie...
--
Grüße aus dem Saarland
Dirk
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
06.06.2005, 22:18 Uhr
~Bobby2005
Gast


Hallo,
Das klingt zwar einbischchen kindisch aber ich sag ma einfach mein Problem:
In der Schule sollen wir das 1x1 mit c++ schreiben.Habe ich gemacht.
Und wir sollen oben und links die Zahlen von 1-10 schreiben:

1 2 3 4 5 6 7 8 9 10
1
2
3
4
5
6
7
8
9
10

Und inder mitte sollen die ausgegeben Zahlen sein:


C++:

#include <stdio.h>
#include <iostream.h>

int main()
{
    int i,j,k,l=1;

    do
    {cout<<"                   ßßßßßßßßßßßßßDas kleine 1x1ßßßßßßßßßßßßß"<<endl;
    for (i=1;i<=10;i++)
        {
        cout<<i<<"\t";
        }
               cout<<"_|________________________________________________________________________"<<endl;
              cout<<"1|";

    for (i=1;i<=10;i++)
        {for (j=1;j<=10;j++)
            {
            k = i*j;cout<<k<<"\t";
            }
        cout<<endl;
        }
            cout << "Programmneustart? 0=ja :\t";
            cin  >> l;
            cout << endl;
    }
    while (l!= 0);
    return 0;
}



Nur die linke seite gelingt mir irgendwie nicht. Hab überlegt und überlegt, aber bin nicht draufgekommen.
Brauche Hilfe.
Kennt ihr eine Lösung?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
06.06.2005, 22:19 Uhr
~Bobby2005
Gast


Mist,
Das sollte wo anders rein.
Sorry
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
08.06.2005, 11:26 Uhr
~krozey
Gast


hi,

muss es denn unbedingt eine messagebox sein? du könntest die meldung eventuell ja auch im hauptfenster als text mit ton ausgeben und zwar so formatiert das man es nicht übersehen kann. dann dürfte das problem dessen ursache scheinbar die messagebox ist nicht auftreten und zudem wird der user nicht zum wegdrücken der messagebox genötigt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: