Zum Inhalt springen

bigpoint

Mitglieder
  • Gesamte Inhalte

    1.243
  • Benutzer seit

  • Letzter Besuch

Beiträge von bigpoint

  1. 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

  2. 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 ??

  3. 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 )

  4. 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);

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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

  10. 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

  11. 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 ;-(

  12. 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);

    }

  13. 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 ???

  14. 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

  15. 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]

  16. 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

  17. 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

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...