
kaldemor
Mitglieder-
Gesamte Inhalte
26 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von kaldemor
-
ExecuteSQL() wird nicht ausgeführt
kaldemor antwortete auf kaldemor's Thema in C++: Compiler, IDEs, APIs
Danke für die Hinweise! 1. Frage: Ja, es können mehrere Benutzer das Programm nutzen. (Server, Terminalverbindung) 2. Hinweis: New, Delete: Hab alles überprüft, delete wird immer dann nicht verwedet wenn try/catch aufgerufen wurde + Programmabsturz. In diesem Fall wird der Speicher nicht freigegeben. 3. Hinweis: Können Speicherlecks ExecuteSQL() in die bringen? Mfg, tocha -
ExecuteSQL() wird nicht ausgeführt
kaldemor antwortete auf kaldemor's Thema in C++: Compiler, IDEs, APIs
Diese Fehler sind vereinzelt aufgetreten: 2007.07.18 und 2008.03.31 Das Microsoft Jet-Datenbankmodul hat den Vorgang angehalten, da Sie und ein weiterer Benutzer gleichzeitig versuchen, dieselben Daten zu verändern. 2007.11.07 Nicht genügend Arbeitsspeicher. 2008.02.18 Versuch zu aktualisieren oder zu löschen ist fehlgeschlagen. -
ExecuteSQL() wird nicht ausgeführt
kaldemor antwortete auf kaldemor's Thema in C++: Compiler, IDEs, APIs
Update gibt TRUE zurück. Ob es eine Fehlermeldung gibt, dass weiß ich nicht! Das Problem tritt sehr selten auf um es nachvollziehen zu können. Es sind Datensätze vorhanden. Obwohl habe ich bedenken, dass Daten erst nach 5 s. aktualisiert werden (PageTimeout = 5000) ODBC: Access 2000 Visual C++, MFC, Version 6.0 liegt das Problem ev. beim Open() mit snapshot? if( dbDatabase.IsOpen() == 0 ) return FALSE; rs = new CRecSet(&dbDatabase); if( !rs->Open(CRecordset::snapshot, "TABELLE", CRecordset::none) ) { dbDatabase.Close(); AfxMessageBox("Problem beim Öffnen TabelleSet"); return FALSE; } Mfg, kaldemor -
Richtig! Da aber es sich auch um Datenbank- und C++ - Problem handelt muss ich die beiden Foren ansprechen. Mfg, kaldemor
-
Hi, beim ausführen von ExecuteSQL() wird der Datensatz nicht aktualisiert. Dieses Problem taucht nur selten auf und deswegen kann ich es nicht nachvollziehen voran es liegen kann? ODBC: Access2000 Entwicklungsumgebung: MS C++, MFC z. B. Dieser Code wird im Programm immer aufgerufen wenn ein Vorgang abgeschlossen ist CString strSql; long lVorlaufigeNr, lNeueNr; lVorlaufigeNr = 10001775; lNeueNr = 12331; try { //UINT III_ID, LPCTSTR III_TEXTID, LONG lWert rs->m_strFilter.Format("L_ID = %d AND STR_ID = '%s'", III_ID, III_TEXTID); rs->Requery(); if(rs->GetRecordCount() > 0 ) { rs->Edit(); rs->m_L_ID = III_ID; rs->m_STR_ID = III_TEXTID; rs->m_L_FORMAT = 0; rs->m_STR_RET = ""; rs->m_L_RET = lWert; rs->Update(); } strSql.Format("Update MyTabelle Set Nummer = %ld, Status = TRUE Where Nummer = %ld AND Status = FALSE", lNeueNr, lVorlaufigeNr); dbDatabase.ExecuteSQL(strSql); // Datensatz wird in seltenen Fällen nicht aktualisiert } catch(CDBException *e) { AfxMessageBox(e->m_strError, MB_ICONEXCLAMATION); e->Delete(); return FALSE; } Hat jemand eine Idee? Mfg, kaldemor
-
Hi, beim ausführen von ExecuteSQL() wird der Datensatz nicht aktualisiert. Dieses Problem taucht nur selten auf und deswegen kann ich es nicht nachvollziehen voran es liegen kann? z. B. Dieser Code wird im Programm immer aufgerufen wenn ein Vorgang abgeschlossen ist CString strSql; long lVorlaufigeNr, lNeueNr; lVorlaufigeNr = 10001775; lNeueNr = 12331; try { //UINT III_ID, LPCTSTR III_TEXTID, LONG lWert rs->m_strFilter.Format("L_ID = %d AND STR_ID = '%s'", III_ID, III_TEXTID); rs->Requery(); if(rs->GetRecordCount() > 0 ) { rs->Edit(); rs->m_L_ID = III_ID; rs->m_STR_ID = III_TEXTID; rs->m_L_FORMAT = 0; rs->m_STR_RET = ""; rs->m_L_RET = lWert; rs->Update(); } strSql.Format("Update MyTabelle Set Nummer = %ld, Status = TRUE Where Nummer = %ld AND Status = FALSE", lNeueNr, lVorlaufigeNr); dbDatabase.ExecuteSQL(strSql); // Datensatz wird in seltenen Fällen nicht aktualisiert } catch(CDBException *e) { AfxMessageBox(e->m_strError, MB_ICONEXCLAMATION); e->Delete(); return FALSE; } Hat jemand eine Idee? Mfg, kaldemor
-
Hat jemand schon den Grid von Roque Wave Software in die MFC Projekte eingebunden? Als ActiveX oder direkt eingebunden? mfg, kaldemor
-
Wer hat schon so ein Grid unter Visual C++ verwendet ( TAdvStringGrid example 30 )? mfg, kaldemor
-
Wer hat schon so ein Grid unter VS2005 (MFC oder C#) verwendet ( TAdvStringGrid example 30 )? mfg, kaldemor
-
Hi, unterstützt dieses Stringgrid auch Memofelder mit Rtf-Formatierung? Wenn ja, unter welcher Entwicklungsumgebung und welcher Hersteller? Danke im Voraus, kaldemor
-
Hallo, wie kann man Höhe und Breite von einem Richedittext ermitteln? Hab mit dem Beispiel aus MSDN versucht -> Programmabsturz. // The pointer to my rich edit control. CRichEditCtrl* pmyRichEditCtrl; // A pointer to a printer DC. CDC* pMyPrinterDC; FORMATRANGE fr; // Get the page width and height from the printer. long lPageWidth = ::MulDiv(pMyPrinterDC->GetDeviceCaps(PHYSICALWIDTH), 1440, pMyPrinterDC->GetDeviceCaps(LOGPIXELSX)); long lPageHeight = ::MulDiv(pMyPrinterDC->GetDeviceCaps(PHYSICALHEIGHT), 1440, pMyPrinterDC->GetDeviceCaps(LOGPIXELSY)); CRect rcPage(0, 0, lPageWidth, lPageHeight); // Format the text and render it to the printer. fr.hdc = pMyPrinterDC->m_hDC; fr.hdcTarget = pMyPrinterDC->m_hDC; fr.rc = rcPage; fr.rcPage = rcPage; fr.chrg.cpMin = 0; fr.chrg.cpMax = -1; pmyRichEditCtrl->FormatRange(&fr, TRUE); // Update the display with the new formatting. RECT rcClient; pmyRichEditCtrl->GetClientRect(&rcClient); pmyRichEditCtrl->DisplayBand(&rcClient); Hat jemand eine andere Idee? Mfg, kaldemor
-
z.B. erstelle vorher zwei Klassen von Deinen Dialogmasken dlgFirstPropPage dlgSecondPropPage (abgeleitet von CPropertyPage) void CWaWiApp::OnAufrufAusdemMenue () { CPropertySheet dlgSheet("MyTest"); dlgSheet.m_psh.dwFlags |= PSH_NOAPPLYNOW; dlgSheet.AddPage(&dlgFirstPropPage); dlgSheet.AddPage(&dlgSecondPropPage); dlgSheet.DoModal(); } Mfg, kaldemor
-
CGridCtrlDemo und Richeditgrid
kaldemor antwortete auf kaldemor's Thema in C++: Compiler, IDEs, APIs
Zitat: GetTextExtent überschreiben Ist es der richtige Ansatz mit m_pRichEditTemp->FormatRange(&fr, TRUE); m_pRichEditTemp->GetClientRect (&Rect); oder bin ich auf dem Holzweg? Zitat: CRichEditCtrl::StreamIn Daran hab ich es auch gedacht. Nun die Lösung (etwas umständlich): CGridCellRich* pCell=(CGridCellRich*) m_Grid.GetCell(1, 1); if (pCell) pCell->SetRichText(Text); m_Grid.SetItemText(1,1, Text); void CGridCellRich::SetRichText(CString str) { EDITSTREAM es; es.dwCookie = (DWORD)&str; es.pfnCallback = MyStreamInCallback; m_pRichEditTemp->StreamIn(SF_RTF, es); } // Funktion MyStreamInCallback hab ich von CodeProject. Free source code and programming help DWORD CALLBACK CGridCellRich::MyStreamInCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb) { CString* str = ( ( CString* ) dwCookie ); #ifdef _UNICODE // Unicode is only supported for SF_TEXT, so we need // to convert LPCTSTR ptr = str->GetBuffer( (*str).GetLength() ); int length = ::WideCharToMultiByte( CP_UTF8, 0, ptr, -1, NULL, 0, NULL, NULL ); int max = min( cb, length ); if( length ) { char* buff = new char[ length ]; ::WideCharToMultiByte( CP_UTF8, 0, ptr, -1, buff, length + 1, NULL, NULL ); strncpy( (LPSTR) pbBuff, buff, max ); delete[] buff; } str->ReleaseBuffer(); #else int max = min( cb, (*str).GetLength() ); strncpy( ( LPSTR ) pbBuff, (*str) , max ); #endif (*str) = (*str).Right( (*str).GetLength() - max ); *pcb = max; return 0; } Mfg, Kaldemor -
CGridCtrlDemo und Richeditgrid
kaldemor antwortete auf kaldemor's Thema in C++: Compiler, IDEs, APIs
FormatRange wird bereits in CGridCellRich::Draw() eingesetzt. Oder soll ich die GetText() überschreiben? Jetzt habe ich ein größeres Problem: Text eine Zelle mit m_Grid.SetItemText(1,1, _T(„TEXT“)) einfügen/überschreiben. Jetzt möchte ich den RichTextfeld aus meiner Datenbank auslesen und diesen in eine bestimmte Zelle einfügen. Wenn man jetzt den Richtext nicht in normales Text umwandeln darf, da ja die Formatierung verloren geht, wie soll man da sonst vorgehen? Mfg, kaldemor -
Frage zu meinem aller ersten Problem: Wenn ich die Schriftgröße vom Text ändere und AutoSizeRow() aufrufe, wird die Zellenhöhe fasch ermittelt. Ist auch logisch, da die Funktion GetText() einen Richtext zurück gibt. Hab versucht den Richtext in nur Text (SF_TEXT) umzuwandeln, hab aber wegen pCell->EndEdit() keinen Bezug auf Richeditfeld mehr. Was muß ich vorher beachten? Gibt es andere Möglichkeit den Richtext umzuwandeln? CSize CGridCellBase::GetCellExtent(CDC* pDC). { CSize size; CString str, Text; Text = GetText(); if (Text.Left (6)=="{\\rtf1") { CInPlaceRichEdit* prich = NULL; prich->GetRichText(); size = GetTextExtent(Text, pDC); } else size = GetTextExtent(GetText(), pDC); } void CGridCellRich::GetRichText(CString& str) { EDITSTREAM es; COOKIE cookie; es.dwCookie = (DWORD)&cookie; es.pfnCallback = GetEditStreamCallback; m_pRichEditTemp->StreamOut(SF_TEXT, es); str = cookie.strText; } // Beispiel um Schriftgröße zu ändern CGridCellRich* pCell=(CGridCellRich*) m_Grid.GetCell (m_Grid.GetFocusCell().row, m_Grid.GetFocusCell().col); CString strFontSize; int iIndex = 0; iIndex = m_CBGroesse.GetCurSel(); if( iIndex != CB_ERR ) m_CBGroesse.GetLBText(iIndex, strFontSize); if (pCell) { pCell->SetFontSize( atoi(strFontSize) ); pCell->EndEdit(); m_Grid.AutoSizeRow(row); m_Grid.Invalidate(); } Mfg, kaldemor
-
CGridCtrlDemo und Richeditgrid
kaldemor antwortete auf kaldemor's Thema in C++: Compiler, IDEs, APIs
Danke für den Tip! -
Hallo, hab weitere Probleme mit Richeditgrid. Wenn ich ein einer Zelle nur ein Wort (die Zelle enthält mehrzeiligen Text) markiere und die Schriftart oder Fontgröße verändere -> ist OK. Wenn ich aber den gesamten Text markiere und Fontgröße ändere, dann andere Zelle aktiviere, enthält diese Zelle scheinbar auch diese Formatierung. Mein verdacht ist das der Vorgang nicht ganz abgeschlossen ist, so dass die Zeiger nicht freigeben werden. Beispiel: CGridCellRich* pCell=(CGridCellRich*) m_Grid.GetCell (m_Grid.GetFocusCell ().row,m_Grid.GetFocusCell ().col); if (pCell) pCell->SetUnderline(); //***************************************** void CGridCellRich::SetUnderline () { if (!m_bEditing) return; CHARFORMAT CharFormat; CharFormat.cbSize=sizeof(CharFormat); CharFormat.dwMask=CFM_UNDERLINE; CharFormat.dwEffects=CFE_UNDERLINE; CRichEditCtrl* pRich=(CRichEditCtrl*) m_pEditWnd; pRich->SetSelectionCharFormat (CharFormat); // pRich = NULL; }
-
Probleme mit CGridCtrlDemo und Richedittext
kaldemor antwortete auf kaldemor's Thema in C++: Compiler, IDEs, APIs
Ich bin auch so blind! Es ist ja nicht IDC_GRID Element gemeint sondern Richeditelement! Problem in beiden Projekten behoben! m_RichEditTemp.Create (WS_CHILD|ES_MULTILINE|ES_WANTRETURN, CRect(0,0,0,0),this,IDC_RICHEDIT_TEMP); -
Probleme mit CGridCtrlDemo und Richedittext
kaldemor antwortete auf kaldemor's Thema in C++: Compiler, IDEs, APIs
Jetzt weiß ich es warum ich es nicht funktiniert hat. Im Projekt gridctrl_demo226 wird ein Benutzersteuerelement IDC_GRID verwendet. In der Datei GridCtrlDemo.rc hab ich die Style wie folgt CONTROL "Custom1",IDC_GRID,"MFCGridCtrl",WS_TABSTOP |ES_MULTILINE|ES_WANTRETURN,7,7,477,297 geändert. Projekt bereinigt und neu erstellt. Das hat leider keine Änderungen bei Darstellung von mehrzeiligen Text bewirkt. Die Lösung: Benutzersteuerelement IDC_GRID löschen und Element, wie Projekt RichEditGrid erstellen: m_RichEditTemp.Create (WS_CHILD|ES_MULTILINE|ES_WANTRETURN, CRect(0,0,0,0),this,IDC_RICHEDIT_TEMP); Vielen Dank für Hilfe an Klotzkopp! Mfg, kaldemor -
Probleme mit CGridCtrlDemo und Richedittext
kaldemor antwortete auf kaldemor's Thema in C++: Compiler, IDEs, APIs
Entschulding, hab die Frage etwas falsch gestellt. Die Probleme mit Create(..|ES_MULTILINE|ES_WANTRETURN) sowie mit der Eingabe im Richeditfeld (OnChar) habe gleich am Anfang gelöst. Die eigentlichen Probleme liegen mit Darstellung von mehrzeiligen Text, wo auch Returns (\r\n) vorhanden sind, Fontgröße ändern. Es immer nur die erste Zeile sichtbar. Danke, kaldemor -
Hi, hab auch ein änhliches Thema unter C und C++ gepostet. Danke kaldemor
-
Probleme mit CGridCtrlDemo und Richedittext
kaldemor antwortete auf kaldemor's Thema in C++: Compiler, IDEs, APIs
Genau so einen Grid suche ich bzw. versuche es zu programmieren. TAdvStringGrid example 30 oder im diesem Projekt http://www.codeproject.com/KB/miscctrl/gridctrl.aspx hab ich die Projektklassen von http://www.codeproject.com/KB/miscctrl/mdricheditgrid.aspx eingefügt. DT_SINGLELINE durch DT_WORDBREAK ersetzt. Bei Create von Richeditfeld setze ich die Parameter ES_MULTILINE und ES_WANTRETURN um multiline usw. zu unterstützen CInPlaceRichEdit::CInPlaceRichEdit() { DWORD dwEditStyle = WS_BORDER|WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL|ES_MULTILINE| ES_WANTRETURN|dwStyle; if (!Create(dwEditStyle, rect, pParent, nID)) return; } Meiner meiner Meinung liegt das Problem in der Funktion BOOL CGridCellRich::Draw() Danke für die Antworten! mfg, kaldemor -
TAdvStringGrid example 30 Genau so einen Grid suche ich für Visual C++ bzw. .Net MFC mfg, kaldemor
-
Viele kennen bestimmt das Projekt CGridCtrlDemo von Chris Maunder. Es gibt auch ein Grid mit CRichEditCtrl Unterstützung (CInPlaceRichEdit, ES_WANTRETURN | ES_MULTILINE, usw.). Leider funktioniert es nicht so richtig. Erstes Problem: Wenn ich mehre Textzeilen in einer Zelle erfasse und diese dann verlasse so wird immer nur die erste Zeile angezeigt. Ich hab versucht die Funkt. Drawtext() anzupassen (DT_CALCRECT |DT_WORDBREAK). Ohne sichtbaren Veränderungen. Zweites Problem: In der Zelle markiere ich eine(n) Text bzw. Buchstabe und verändere die Schriftgröße. Wird auch richtig ausgeführt, aber die Zellenhöhe (row) wird nicht bzw. falsch angepaßt. Ist ja auch logisch da bei zeichnen und rowheight ermitteln Richedittext verwendet wird. Mein Problem ist, wann und welcher Stelle ich den Richedittext in ein String umwandeln soll!? Hat jemand eine Idee
-
Viele kennen bestimmt das Projekt CGridCtrlDemo von Chris Maunder. Es gibt auch ein Grid mit CRichEditCtrl Unterstützung (CInPlaceRichEdit, ES_WANTRETURN | ES_MULTILINE, usw.). Leider funktioniert es nicht so richtig. Erstes Problem: Wenn ich mehre Textzeilen in einer Zelle erfasse und diese dann verlasse so wird immer nur die erste Zeile angezeigt. Ich hab versucht die Funkt. Drawtext() anzupassen (DT_CALCRECT |DT_WORDBREAK). Ohne sichtbaren Veränderungen. Zweites Problem: In der Zelle markiere ich eine(n) Text bzw. Buchstabe und verändere die Schriftgröße. Wird auch richtig ausgeführt, aber die Zellenhöhe (row) wird nicht bzw. falsch angepaßt. Ist ja auch logisch da bei zeichnen und rowheight ermitteln Richedittext verwendet wird. Mein Problem ist, wann und welcher Stelle ich den Richedittext in ein String umwandeln soll!? Hat jemand eine Idee? mfg, kaldemor