bigpoint
-
Gesamte Inhalte
1.243 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Beiträge von bigpoint
-
-
Ich glaube ich werde verrückt
void lalaView::OnBenutzerLast()
{
// Zum letztem Datensatz gehen
GetDocument()->MoveLast();
POSITION pos = m_Grid.GetFirstSelectedItemPosition();
int itemanzahl = m_Grid.GetItemCount();
if( pos ) {
m_Grid.SetItemState( m_Grid.GetNextSelectedItem(pos), itemanzahl, LVIS_SELECTED );
}
// List Control Spalte aktiviren
m_Grid.SetItemState(itemanzahl,LVIS_SELECTED,LVIS_SELECTED);
}
so versuche ich den Letzten Datensatz zu markieren leider ohne Erfolg
-
m_Grid.DeleteItem(nItem);
funktioniert wunderbar
void lalarView::OnBenutzerFirst()
{
// Zum ersten Datensatz gehen
GetDocument()->MoveFirst();
POSITION pos = m_Grid.GetFirstSelectedItemPosition();
if( pos ) {
m_Grid.SetItemState( m_Grid.GetNextSelectedItem(pos), LVIS_SELECTED, 0 );
}
}
so wie ich es verstehe ist es so dass Du holst sich Item der zuerst selektiert wahr also 0 im meinem fall und dann setz Du ihn (Item) zurück ?
Leider funk nicht
Bevor Du die neue Selektion auf den ersten Eintrag setzt, musst Du zuerst die alte Selektion entfernen“/B]
ja schon klar aber ich weis es nicht wie ??
-
Originally posted by Klotzkopp
Was das Auslesen des Passworts angeht, verweise ich auf die Boardregeln.
Sorry war wirklich nicht so gemeint kein cracken ;-) dazu sind schon genügend Tools geschrieben ;-()
Ich wollte es nur deswegen denn ich schreibe ein Benutzerverwaltung Tool und da habe ich mir gedacht am besten wenn ich nicht zweimal password und loginname von User verlange sondern das was im OS steht nehme aber so wie ich es sehe darf man nicht ;-)
Übrigens hat schon jemand ein schönen Userverwaltung progi im netz gesehen?? (vielleicht sind da par Ideen die ich auch verwenden kann )
-
Noch zwei Probleme:
1 in meinem Programm habe ich auch Möglichkeit das der Benutzer durch ein Toolbar zum ersten letzten usw. Datensatz in Control List geht und der als aktiv markiert wird. Es funk ( fast ) nur die Spalte die ich beim Programmstart oder durch anklicken aktiv mache bleibt auch angezeigt also blau ;-( so mache ich es:
void lalaView::OnBenutzerFirst()
{
GetDocument()->MoveFirst();
// List Control Spalte aktiviren
m_Grid.SetItemState(0,LVIS_SELECTED,LVIS_SELECTED);
UpdateData(FALSE);
}
also wenn ich mein progi starte dann welle ich irgend eine spalte dann will durch Toolbar zu erste wider zurück und das Resultat es werden beide Spalten angezeigt also erste und die die ich angeklickt habe
sollte nur erste ;-((
2 ich habe auch eine Funktion Löschen die löscht den Datensatz in DB funk auch super plus nur den Datensatz wird weiter in List Control angezeigt also in DB ist gelöscht in List Control sichtbar ;-(
habe es so versucht zu lösen
m_Grid.UpdateData(FALSE);
-
Originally posted by Klotzkopp
Hat das List Control den Fokus oder den Style LVS_SHOWSELALWAYS?
Wenn beides nicht der Fall ist, kannst Du die Selektion gar nicht sehen.
Merci
-
Weis jemand wie kann ich die Daten von Betriebssystem auslesen in besonderen Paßwort und LoginName
-
Originally posted by Klotzkopp
Wie sollte das auch funktionieren? Du versuchst, das erste Item in einem List Control zu selektieren, das keine Items enthält. Du musst diese Zeile ausführen, nachdem Du das List Control mit Daten gefüllt hast.
Mache ich auch, also ich habe mich falsch ausgedruckt es ist so ich habe eine Methode in die ich das List Control mit Daten fühle sieht so aus:
void lalaView::LoadCListCtrl()
{
//Zeiger auf die Datensatzklasse
CCustomRs* pRs;
// Zeiger auf Dokumentobjekt holen
pRs = GetDocument()->GetRecSet();
//Columns in CListCtrl Deklarieren
m_Grid.InsertColumn(0, "BenutzerID", LVCFMT_LEFT, 120);
m_Grid.InsertColumn(1, "Loginname", LVCFMT_CENTER, 80);
m_Grid.InsertColumn(2, "Vorname", LVCFMT_LEFT, 120);
m_Grid.InsertColumn(3, "Nachname", LVCFMT_LEFT, 100);
m_Grid.InsertColumn(4, "Standort", LVCFMT_RIGHT, 80);
m_Grid.InsertColumn(5, "Telefon", LVCFMT_CENTER, 100);
m_Grid.SetExtendedStyle(m_Grid.GetExtendedStyle() | LVS_EX_FULLROWSELECT);
//CListCtrl mit Daten fühlen
while(!GetDocument()->m_pRs->EndOfFile){
// Umwandlung int in CString
strBenutzerID.Format( "%i", pRs->m_BenutzerID );
strStatus.Format( "%i", pRs->m_Status);
strErstelldatum.Format("%d", pRs->m_dtErstelldatum);
strLetzteAend.Format("%d",pRs->m_dtLetzteAend);
strLetzterLogin.Format("%d",pRs->m_dtLetzterLogin);
strPWGueltigBis.Format("%d",pRs->m_dtPWGueltigBis);
int nItem = m_Grid.InsertItem(0, strBenutzerID);
m_Grid.SetItemText(nItem, 1, m_strLoginname);
m_Grid.SetItemText(nItem, 2, m_strFirstName);
m_Grid.SetItemText(nItem, 3, m_strLastName);
m_Grid.SetItemText(nItem, 4, m_strStandort);
m_Grid.SetItemText(nItem, 5, m_strPhone);
GetDocument()->m_pRs->MoveNext();
RefreshBoundData();
}
ModifyStyle(NULL, LVS_REPORT, 0);
m_Grid.SetItemState(0,LVIS_SELECTED,LVIS_SELECTED);
}
und in OnInitialUpdate abrufe sollte funktionieren oder ?? Leider ist es nicht der Fall ;-(((
Da aber noch eine Frage zu while schleife die fühlt zwar das List Control mit Daten aber die BenutzerID ist Abwärts sortiert dh stat 12345 54321 ich vermute es liegt an int nItem = m_Grid.InsertItem(0, strBenutzerID); bin mir aber nicht sicher
-
also in OnInitialUpdate() sind keine Items eingetragen trotzdem wenn ich es da versuche abzurufen funk nicht brauche ich vieleich Update oder so ?
-
Nach was jetzt versuche ich es so machen das bei starten des Programms der erste Satz in ClistCtr angezeigt wird dann mache ich so:
m_Grid.SetItemState(0,LVIS_SELECTED,LVIS_SELECTED|LVIS_FOCUSED);
und zwar das habe ich schon sowohl in der Methode OnItemchangedList2(NMHDR* pNMHDR, LRESULT* pResult) als in OnInitialUpdate() machen. Der Effekt ist so das erst beim einklicken wird der erste Satz aktiv und somit ist er auch immer aktiv dh. wenn ich andere Felder klicke bleibt er aktiv
-
Originally posted by Klotzkopp
NM_CLICK wird nur mit der Maus ausgelöst. Außerdem ist es dabei möglich, über LVM_SUBITEMHITTEST herauszufinden, ob auf ein Subitem geklickt wurde.
LVN_ITEMCHANGED wird immer ausgelöst, wenn ein Item selektiert oder deselektiert wird, egal ob das durch die Maus oder die Tastatur ausgelöst wurde. Wenn Dein List Control auch mit der Tastatur bedienbar sein soll, musst Du LVN_ITEMCHANGED verwenden.
:uli
Vielen Dank
-
Kein Problem ich habe nur gedacht es gibt irgendeine Methode von MFC die das einfach für mich erledigt ;-)))
Noch eine Frage: ich habe am Anfang mit NM_CLICK statt LVM_ITACHMEND benutz wo ist der Unterschied und was ist besser ?
Vielen Dank für dein :mod: Klozkop
-
Also wenn ich so schreibe:
int item = pNMListView->iItem;
// hole Text von Item 3, Subitem 5
CString strText = m_Grid.GetItemText( item, 5 )
kriege ich ihn strText nur die Daten die in der spalte 5 stehen ich brauche aber alle Gibt da irgend eine Möglichkeit
-
Originally posted by Klotzkopp
CListCtrl::GetItemText
Irgend wie checke ich es heute nicht mehr in MSDN steht
CListCtrl::GetItemText
int GetItemText( int nItem, int nSubItem, LPTSTR lpszText, int nLen ) const;
CString GetItemText( int nItem, int nSubItem ) const;
Return Value
The version returning int returns the length of the retrieved string.
The version returning a CString returns the item text.
Parameters
nItem
The index of the item whose text is to be retrieved.
nSubItem
Specifies the subitem whose text is to be retrieved.
lpszText
Pointer to a string that is to receive the item text.
nLen
Length of the buffer pointed to by lpszText.
Trozdem kriege ich den Inhalt nicht oder übrigens was braucht die Methode
pNMListView->iItem es ist irgend wie von java++ oder
-
Sorry für die blöde Frage aber wie komme ich dann auf die Daten die in der Spalte stehen ?
-
Da bin ich noch mal ;-)
Wie kann ich auf Benutzer Ereignisse reagieren beim CListCtrl dh. wenn er im CListCtrl klickt die Daten aus dem Feld auslesen
Vielen Dank
-
Originally posted by Klotzkopp
EOF ist -1, !EOF ist also immer falsch. Vielleicht meinst Du sowas wie pRs->EOF?
Außerdem solltest Du in der Schleife auf den nächsten Datensatz wechseln, sonst hast Du eine Endlosschleife.
Richtig so mache ich es:
while(!GetDocument()->m_pRs->EndOfFile){
m_fghBenutzerVer.SetTextArray(GenID(liCount,0),strBenutzerID);
m_fghBenutzerVer.SetTextArray(GenID(liCount,1),m_strLoginname);
m_fghBenutzerVer.SetTextArray(GenID(liCount,2), m_strFirstName);
m_fghBenutzerVer.SetTextArray(GenID(liCount,3), m_strLastName);
m_fghBenutzerVer.SetTextArray(GenID(liCount,4), m_strStandort);
m_fghBenutzerVer.SetTextArray(GenID(liCount,5), m_strPhone);
m_fghBenutzerVer.SetTextArray(GenID(liCount,6),strErstelldatum);
m_fghBenutzerVer.SetTextArray(GenID(liCount,7),strLetzteAend);
m_fghBenutzerVer.SetTextArray(GenID(liCount,8),strLetzterLogin);
m_fghBenutzerVer.SetTextArray(GenID(liCount,9),strPWGueltigBis);
m_fghBenutzerVer.SetTextArray(GenID(liCount,10), pRs->m_szKommentar);
m_fghBenutzerVer.SetTextArray(GenID(liCount,11),strStatus);
GetDocument()->m_pRs->MoveNext();
}
trotzdem kriege ich nur den ersten Datensatz ;-(
-
Mag sein, bei mir war es reine Einstellung Sache in Eigenschaften ( peinlich ) sonst funk so und so.
Jetzt aber noch was wie schreibe ich meine alle Daten aus dem DB in mein ClistCtrl ich kann nur ersten Satz schreiben habe so versucht aber wird nichts angezeigt
while(!EOF){
int nItem;
nItem = m_Grid.InsertItem(0, strBenutzerID);
m_Grid.SetItemText(nItem, 1, m_strLoginname);
m_Grid.SetItemText(nItem, 2, m_strFirstName);
m_Grid.SetItemText(nItem, 3, m_strLastName);
m_Grid.SetItemText(nItem, 4, m_strStandort);
m_Grid.SetItemText(nItem, 5, m_strPhone);
m_Grid.SetItemText(nItem, 6, strErstelldatum);
m_Grid.SetItemText(nItem, 7, strLetzteAend);
m_Grid.SetItemText(nItem, 8, strLetzterLogin);
m_Grid.SetItemText(nItem, 9, strPWGueltigBis);
m_Grid.SetItemText(nItem, 10, pRs->m_szKommentar);
m_Grid.SetItemText(nItem, 11, strStatus);
}
-
Originally posted by Klotzkopp
Das scheint so weit in Ordnung zu sein. Mit Anzeigen hat der gezeigte Code auch nichts zu tun. Machst Du an anderer Stelle vielleicht noch ein MoveNext oder MovePrevious?
Ja beides und zwar in eigenem Methoden so:
void laladoc::MovePrevious()
{
if(m_pRs->BOF == FALSE){
try
{
// Aktuellen Datensatz aktualisieren
m_piAdoRecordBinding->Update(&m_rsRecSet);
// Zum vorherigen Datensatz gehen
m_pRs->MovePrevious();
}
// Fehler?
catch (_com_error &e)
{
// Fehlermeldung generieren
GenerateError(e.Error(), e.Description());
}
}else AfxMessageBox("Sie haben den ersten Datensatz erreicht");
}
void lalaDoc::MoveNext()
{
try
{
// Aktuellen Datensatz aktualisieren
m_piAdoRecordBinding->Update(&m_rsRecSet);
// Zum nechsten Datensatz gehen
m_pRs->MoveNext();
if (m_pRs->EndOfFile){
AfxMessageBox("Sie haben den letzten Datensatz erreicht");
m_pRs->MoveLast();
}
}
// Fehler?
catch (_com_error &e)
{
// Fehlermeldung generieren
GenerateError(e.Error(), e.Description());
}
aber ich verstehe nicht was kann es damit zu tun haben ???
-
Also ich habe ein ClistCtrl und und ein SDI Anwendung ;-)
Jetzt versuche ich in meinem SDI in der Methode OnInitialUpdate() in meinem ClistCtrl was schreiben und zwar so:
m_Grid.InsertColumn(0, "Name", LVCFMT_LEFT, 120);
m_Grid.InsertColumn(1, "Vorname", LVCFMT_CENTER, 80);
m_Grid.InsertColumn(2, "Qualification", LVCFMT_LEFT, 120);
m_Grid.InsertColumn(3, "Profession", LVCFMT_LEFT, 100);
m_Grid.InsertColumn(4, "Fav. Sport", LVCFMT_RIGHT, 80);
m_Grid.InsertColumn(5, "Hobby", LVCFMT_CENTER, 100);
int nItem;
nItem = m_Grid.InsertItem(0, "Micheline Hubert");
m_Grid.SetItemText(nItem, 1, "02/26");
m_Grid.SetItemText(nItem, 2, "R.N.");
m_Grid.SetItemText(nItem, 3, "Nurse");
m_Grid.SetItemText(nItem, 4, "HandBall");
m_Grid.SetItemText(nItem, 5, "Internet");
ModifyStyle(NULL, LVS_REPORT, 0);
Leider kriege ich nur Micheline Hubert als Resultat warum?????
Ich will doch auch meine Columns sehen und auch die richtig fühlen
Was mache ich falsch ?????
Vielen Dank
-
Hallo,
ich greife auf DB mit ADO zu es funktioniert alles wunderbar bis auf Delete() hier Quelcode:
void lala::Delete() { try { // Aktuellen Datensatz aktualisieren m_piAdoRecordBinding->Update(&m_rsRecSet); // Kann ein Datensatz gelöscht werden? if (m_pRs->Supports(adDelete)) { // Nachfragen, ob Benutzer wirklich diesen Datensatz löschen will if (AfxMessageBox("Diesen Datensatz wirklich löschen?", MB_YESNO | MB_ICONQUESTION) == IDYES) { // Datensatz löschen m_pRs->Delete(adAffectCurrent); // Aktuellen Datensatz aktualisieren m_pRs->MoveLast(); } } } // Fehler? catch (_com_error &e) { // Fehlermeldung generieren GenerateError(e.Error(), e.Description()); } }
bei Delete ist es so das ich kann zwar den Datensatz löschen aber im Dialog entweder wird er angezeigt oder springt zwei weiter das heißt wenn ich die Nr 6 lösche und m_pRs->MoveLast(); benutze springt er auf 4 sonst bleibt er auf 6 stehen habe alles versucht auch UpdateData(FALSE); usw. hilft aber nichts ;-(((((( Ich arbeite mit SDI
[edit: bitte die Code-Tags verwenden, damit die Einrückung erhalten bleibt | Klotzkopp]
-
In meinem CMSHFlexGrid Steuerelement sollen alle Datensätze angezeigt sein die in einem DB stehen ja und es ist mein Problem ich kann zwar ersten Satz lesen aber die nächste ?
Ich versuche es in eine vor schleife zu machen aber irgend wie ohne Erfolg ;-)
-
Habe schon geschafft :marine
-
Hallo,
ein kleines problem,
ich habe SDI Anwendung und in dem SDI mehrere Formansichten (FormView) zwischen die ich problemlos switchen kann ;-)
Jetzt will ich aber das bei starten ein Standart-ToolBar anzeigen und wenn ich zwischen den Formen wechsle ein anderen, eigentlich klingt es einfach aber irgend wie klemmt bei mir, ich bitte um Hilfe
-
Originally posted by Klotzkopp
Dann dürfte das, was Du oben gemacht hast, eigentlich nicht funktionieren. Besser wäre:
CString strBenutzerID;
strBenutzerID.Format( "%d", pRs->m_BenutzerID );
m_fgBenutzerVer.SetTextArray(7, strBenutzerID);
Das funk nicht richtig denn wenn ich in DB NULL habe kriege ich irgendwelche komische Werte
CListCtrl
in C++: Compiler, IDEs, APIs
Geschrieben
Aha, mein Problem ist aber
int itemanzahl = m_Grid.GetItemCount();
m_Grid.SetItemState(itemanzahl,LVIS_SELECTED,LVIS_SELECTED);
sollte meine Meinung nach das Letzte Item aktiv sein ist aber nicht der Fall
:confused: