Question

Need some help with ComboBox and Column

Asked by: tsp2002

Hello,
Zoppo I have a new question regarding the combobox with column.
--------------------------------------------------------------------------------
How can I send a CString with SetDlgItemText to a Editbox in my Dialog.
in my virtual function SelectCurrentItem()' at my new class?

I always get an error that my program don´t know the resource ID.

500 points.
Best regards,
Thomas

Hi tsp2002,
 
ok, to derive your own class it's simply enough to do something like this:
 
Create two new files:
1. MyMultiColumnComboBox.h
> #pragma once
>
> class CMyMultiColumnComboBox : public CMultiColumnComboBox
> {
> public:
>  virtual void SelectCurrentItem();
> };
 
2. MyMultiColumnComboBox.cpp
> #include "stdafx.h"
> #include "MultiColumnComboBox.h"
>
> void CMyMultiColumnComboBox::SelectCurrentItem()
> {
>  int nIndex = GetCurrentItem();
>
> CString strText;
> CListCtrl* pList = GetListCtrl();
>
> if ( NULL != pList && nIndex >= 0 )
> {
>  strText.Format( "%s, %s, %s", pList->GetItemText( nIndex, 0 ), pList->GetItemText( nIndex, 1 ), pList->GetItemText( nIndex, 2 ) );
> }
>
> GetEdit()->SetWindowText( strText );
>
> // this is copied from original source
> if (nIndex >= 0)
>  if (CWnd* pParent = GetParent())
>   pParent->SendMessage(m_nSelChange, (WPARAM)GetDlgCtrlID(), (LPARAM)m_hWnd);
> }
 
Then where you now use CMultiColumnComboBox replace
> #include "MultiColumnComboBox.h"
with
> #include "MultiColumnComboBox.h"
 
and
> CMultiColumnComboBox m_wndCombo; // or whatever name you use
with
> CMyMultiColumnComboBox m_wndCombo;
 
This should do the job ...
 
Hope that helps,
 
ZOPPO

                                  
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:

Select allOpen in new window

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2009-10-26 at 06:39:37ID24843477
Tags

http://www.codeguru.com/cpp/controls/combobox/multicolumncombos/article.php/c1819/

Topics

Windows MFC Programming

,

Programming Languages

Participating Experts
1
Points
500
Comments
42

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. ComboBox's In A Grid
    I'm creating an work order database and have created a form containing a grid to display all the orders in the database. I want to be able to interactively change the work orders' priority in that grid. The problem arises since I want the users to be able to only enter in t...

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: ZoppoPosted on 2009-10-26 at 06:51:51ID: 25662203

Hi tsp2002,

could you post the 'SelectCurrentItem' as you use it now?

I guess the ID you pass to SetDlgItemText doesn't exist? Is it the edit box of the multi-column combo box or any other edit box in the dialog?

ZOPPO

 

by: tsp2002Posted on 2009-10-26 at 07:01:07ID: 25662273

The ID exist....it is a Editbox of my Dialog

SetDlgItemText(IDC_EDIT_ADRESSE_RECHNUNG_ID, "just a try");  will not find this ID


#include "StdAfx.h"
#include ".\multi_column_combobox_neu.h"
#include "Geschaeftsadressen.h"
 
 
 
 
CMulti_Column_ComboBox_NEU::CMulti_Column_ComboBox_NEU(void)
{
}
 
CMulti_Column_ComboBox_NEU::~CMulti_Column_ComboBox_NEU(void)
{
}
//########################################################
void CMulti_Column_ComboBox_NEU::SelectCurrentItem(void)
{
	int nIndex = GetCurrentItem();
	CString strText;
	CListCtrl* pList = GetListCtrl();
	//------------------------------------------------------------------
	if(NULL !=pList && nIndex >=0)
	{
		 
		strText.Format("%s, %s, %s, %s",    pList->GetItemText(nIndex,1),
			                                pList->GetItemText(nIndex,2),
                                            pList->GetItemText(nIndex,3),
									        pList->GetItemText(nIndex,6));
	   								        
	                            
	}
   //------------------------------------------------------------------
	GetEdit()->SetWindowText(strText);
    
	//MemberVariable
	//m_strAuswahl=strText;
 
 
	//this is the original code
	  //  if (nIndex >= 0)
	  //  if (CWnd* pParent = GetParent())
	  //  pParent->SendMessage(m_nSelChange, (WPARAM)GetDlgCtrlID(), (LPARAM)m_hWnd);
 
 
      
	SetDlgItemText(IDC_EDIT_ADRESSE_RECHNUNG_ID, "just a try");
 
 
}
//########################################################

                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:

Select allOpen in new window

 

by: tsp2002Posted on 2009-10-26 at 07:03:11ID: 25662295

this is the header of the new class from MultiColumnComboBox

#pragma once
#include "multicolumncombobox.h"
 
 
 
class CMulti_Column_ComboBox_NEU :
	public CMultiColumnComboBox
{
public:
	CMulti_Column_ComboBox_NEU(void);
	~CMulti_Column_ComboBox_NEU(void);
	virtual void SelectCurrentItem(void);//auf virtual gesetzt !!!
};
                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:

Select allOpen in new window

 

by: ZoppoPosted on 2009-10-26 at 07:05:43ID: 25662316

Hi,

this cannot work since the edit box is part of the dialog, not of the CMulti_Column_ComboBox_NEU from where you call it.

You can try this instead:

> GetParent()->SetDlgItemText(IDC_EDIT_ADRESSE_RECHNUNG_ID, "just a try");

Hope that helps,

ZOPPO

 

by: tsp2002Posted on 2009-10-26 at 07:10:04ID: 25662366

will not work... same result

 

by: tsp2002Posted on 2009-10-26 at 07:12:04ID: 25662387

does the header have something to do with that....even I enclose the header....same result


#include "Geschaeftsadressen.h" ....that is the class of the dialog where the ComboBox is and the Editbox

 

by: ZoppoPosted on 2009-10-26 at 07:33:45ID: 25662604

Hm - just tested it and in my case it works ok.

Do you still get error that the resource ID wasn't found? Or is it that just the text doesn't appear?

In the first case I can imagine two reasons why this doesn't work for you:
1. The edit box with ID 'IDC_EDIT_ADRESSE_RECHNUNG_ID' is not a control in the multi-column combo box's parent window
2. The 'SelectCurrentItem' is called before the dialog is finally created.

If 1. is not the case (you have to know if it's wrong) I'd suggest to replace your call to 'SetDlgItemTest' with this code:

> CWnd* pParent = GetParent();
> if ( NULL != pParent )
> {
>  CWnd* pEdit = pParent->GetDlgItem( IDC_EDIT_ADRESSE_RECHNUNG_ID );
>  if ( NULL != pEdit )
>  {
>   pEdit->SetItemText( "Just a try!" );
>  }
> }

BTW: It shouldn't matter if you include the dialog's class header since this functionality simply acts on the control's windows, so only the control ID has to be known at this place ...

ZOPPO

 

by: tsp2002Posted on 2009-10-26 at 07:46:14ID: 25662732

sorry...but still the same

Do you still get error that the resource ID wasn't found? Or is it that just the text doesn't appear?.....the resource ID is not found

also I got a new error


'SetItemText': Is no  Element of 'CWnd'

2. The 'SelectCurrentItem' is called before the dialog is finally created.
No....the dialog with my Editbox is there

 

by: ZoppoPosted on 2009-10-26 at 07:58:07ID: 25662871

Sorry, it's 'SetWindowText', not 'SetItemText' ...

Do you use something like a child dialog as parent for either the combo box or the edit control?

Can you check if the edit control and the combo box have the same parent window (the dialog) and the resource ID of the edit box really is IDC_EDIT_ADRESSE_RECHNUNG_ID? You can check both with 'Spy++' which is part of Visual Studio ...

ZOPPO

 

by: tsp2002Posted on 2009-10-26 at 08:00:00ID: 25662895

here are my new class with header and the start of my Dialogclass where the combobox and editbox are located.

....will work tomorrow again....I am on the run.....talk tommorrow.....thank you

#include "StdAfx.h"
#include ".\multi_column_combobox_neu.h"
 
 
 
 
CMulti_Column_ComboBox_NEU::CMulti_Column_ComboBox_NEU(void)
{
}
 
CMulti_Column_ComboBox_NEU::~CMulti_Column_ComboBox_NEU(void)
{
}
//########################################################
void CMulti_Column_ComboBox_NEU::SelectCurrentItem(void)
{
	int nIndex = GetCurrentItem();
	CString strText;
	CListCtrl* pList = GetListCtrl();
	//------------------------------------------------------------------
	if(NULL !=pList && nIndex >=0)
	{
		 
		strText.Format("%s, %s, %s, %s",    pList->GetItemText(nIndex,1),
			                                pList->GetItemText(nIndex,2),
                                            pList->GetItemText(nIndex,3),
									        pList->GetItemText(nIndex,6));
	   								        
	                            
	}
   //------------------------------------------------------------------
	GetEdit()->SetWindowText(strText);
    
	//MemberVariable
	//m_strAuswahl=strText;
 
 
	//this is the original code
	  //  if (nIndex >= 0)
	  //  if (CWnd* pParent = GetParent())
	  //  pParent->SendMessage(m_nSelChange, (WPARAM)GetDlgCtrlID(), (LPARAM)m_hWnd);
 
   
 
 
	 
 
 
}
//########################################################
 
 
 
#pragma once
#include "multicolumncombobox.h"
#include "afxwin.h"
 
 
 
 
class CMulti_Column_ComboBox_NEU :
	public CMultiColumnComboBox
{
public:
	CMulti_Column_ComboBox_NEU(void);
	~CMulti_Column_ComboBox_NEU(void);
	virtual void SelectCurrentItem(void);//auf virtual gesetzt !!!
	 
};
 
 
 
 
 
 
#include "stdafx.h"
#include "Stockbruegger.h"
#include "Kontaktpersonen.h"
#include "Kontaktpersonen_AendernNeu.h"
#include "Geschaeftsadressen.h"
#include "tapi.h"
#include "MsgBox.h"
#include ".\geschaeftsadressen.h"
#include "MouseOverListCtrl_Geschaeftsadressen.h"
 
 
 
 
 
// CGeschaeftsadressen-Dialogfeld
  
 
  
//-------------------------------------------------------------------------
IMPLEMENT_DYNAMIC(CGeschaeftsadressen, CDialog)
CGeschaeftsadressen::CGeschaeftsadressen(CWnd* pParent, int nSteuerung)
	: CDialog(CGeschaeftsadressen::IDD, pParent)
	, m_piAdoRecordBinding(NULL)
	, m_strConnection(_T(""))
	, m_strCmdText(_T(""))
	, m_Auswahl_KD_LF(0)
	, m_Auswahl_Kopieren_mit_ohne(1)//auf ohne gesetzt Kopieren mit/ohne Kontakte
{
    m_Kennzahl_komme_von_CMainFrame = nSteuerung;
	Create(CGeschaeftsadressen::IDD, pParent);
}
 
CGeschaeftsadressen::~CGeschaeftsadressen()
{
}
//-------------------------------------------------------------------------
 
 
 
 
 
 
void CGeschaeftsadressen::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_BUTTON_SCHLIESSEN, m_button_Exit);
	DDX_Control(pDX, IDC_LIST1, m_List);
	DDX_Radio(pDX, IDC_RADIO6, m_Auswahl_KD_LF);
	DDX_Control(pDX, IDC_PROGRESS1, m_progressControl);
	DDX_Control(pDX, IDC_COMBO1, m_ComboBox1);
	DDX_Control(pDX, IDC_COMBO2, m_ComboBox2);
	DDX_Control(pDX, IDC_COMBO3, m_ComboBox3);
	DDX_Control(pDX, IDC_BUTTON_AENDERUNG_SPEICHERN, m_button_Aenderung_Speichern);
	DDX_Control(pDX, IDC_BUTTON_AENDERN, m_button_Aendern);
	DDX_Control(pDX, IDC_BUTTON_AENDERUNG_ABBRECHEN, m_button_Aendern_Abbrechen);
	DDX_Control(pDX, IDC_BUTTON_AENDERN1, m_button_Aendern1);
	DDX_Control(pDX, IDC_BUTTON_AENDERUNG_ABBRECHEN1, m_button_Aendern_Abbrechen1);
	DDX_Control(pDX, IDC_BUTTON_AENDERUNG_SPEICHERN1, m_button_Aenderung_Speichern1);
	DDX_Control(pDX, IDC_BUTTON_GESCHAEFTSADRESSEN_NEU, m_button_Neu);
	DDX_Control(pDX, IDC_BUTTON_GESCHAEFTSADRESSEN_LOESCHEN, m_button_Loeschen);
	DDX_Control(pDX, IDC_BUTTON_GESCHAEFTSADRESSEN_NEU_SPEICHERN, m_button_Speichern);
	DDX_Control(pDX, IDC_BUTTON_GESCHAEFTSADRESSEN_NEU_ABBRECHEN, m_button_Speichern_Abbrechen);
	DDX_Control(pDX, IDC_BUTTON_GESCHAEFTSADRESSEN_COPY, m_button_Copy);
	DDX_Control(pDX, IDC_KONTAKTPERSONEN_AENDERN_NEU, m_button_Kontaktpersonen);
	DDX_Control(pDX, IDC_BUTTON_GESCHAEFTSADRESSEN_RELOAD, m_button_Reload);
	DDX_Radio(pDX, IDC_RADIO1, m_Auswahl_Kopieren_mit_ohne);
}
 
 
BEGIN_MESSAGE_MAP(CGeschaeftsadressen, CDialog)
	ON_BN_CLICKED(IDOK, OnBnClickedOk)
	ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)
	ON_WM_CLOSE()
	ON_BN_CLICKED(IDC_BUTTON_SCHLIESSEN, OnBnClickedButtonSchliessen)
	ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST1, OnCustomdrawList)
	ON_NOTIFY(NM_CLICK, IDC_LIST1, OnNMClickList1)
	ON_WM_TIMER()
	ON_BN_CLICKED(IDC_BUTTON_AENDERN, OnBnClickedButtonAendern)
	ON_WM_VSCROLL()
	ON_BN_CLICKED(IDC_BUTTON_AENDERUNG_ABBRECHEN, OnBnClickedButtonAenderungAbbrechen)
	ON_BN_CLICKED(IDC_BUTTON_AENDERUNG_SPEICHERN, OnBnClickedButtonAenderungSpeichern)
	ON_CBN_SELCHANGE(IDC_COMBO1, OnCbnSelchangeCombo1)
	ON_CBN_SELCHANGE(IDC_COMBO2, OnCbnSelchangeCombo2)
	ON_CBN_SELCHANGE(IDC_COMBO3, OnCbnSelchangeCombo3)
	ON_EN_CHANGE(IDC_EDIT_BEMERKUNG, OnEnChangeEditBemerkung_Anzahl_Zeichen_left)
	ON_BN_CLICKED(IDC_BUTTON_AENDERN1, OnBnClickedButtonAendern1)
	ON_BN_CLICKED(IDC_BUTTON_AENDERUNG_ABBRECHEN1, OnBnClickedButtonAenderungAbbrechen1)
	ON_BN_CLICKED(IDC_BUTTON_AENDERUNG_SPEICHERN1, OnBnClickedButtonAenderungSpeichern1)
	ON_BN_CLICKED(IDC_BUTTON_GESCHAEFTSADRESSEN_NEU, OnBnClickedButtonGeschaeftsadressenNeu)
	ON_BN_CLICKED(IDC_BUTTON_GESCHAEFTSADRESSEN_NEU_ABBRECHEN, OnBnClickedButtonGeschaeftsadressenNeuAbbrechen)
	ON_BN_CLICKED(IDC_BUTTON_GESCHAEFTSADRESSEN_NEU_SPEICHERN, OnBnClickedButtonGeschaeftsadressenNeuSpeichern)
	ON_BN_CLICKED(IDC_BUTTON_GESCHAEFTSADRESSEN_LOESCHEN, OnBnClickedButtonGeschaeftsadressenLoeschen)
	ON_BN_CLICKED(IDC_BUTTON_GESCHAEFTSADRESSEN_COPY, OnBnClickedButtonGeschaeftsadressenCopy)
	ON_BN_CLICKED(IDC_KONTAKTPERSONEN_AENDERN_NEU, OnBnClickedKontaktpersonenAendernNeu)
	ON_BN_CLICKED(IDC_BUTTON_GESCHAEFTSADRESSEN_RELOAD, OnBnClickedButtonGeschaeftsadressenReload)
	ON_BN_CLICKED(IDC_RADIO1, OnBnClickedRadio1Kopieren_mit_Kontakten)
	ON_BN_CLICKED(IDC_RADIO4, OnBnClickedRadio4Kopieren_ohne_Kontakten)
	ON_BN_CLICKED(IDC_RADIO6, OnBnClickedRadio6Kunden)
	ON_BN_CLICKED(IDC_RADIO7, OnBnClickedRadio7Lieferanten)
	ON_BN_CLICKED(IDC_RADIO8, OnBnClickedRadio8Sonstige)
END_MESSAGE_MAP()
 
 
 
 
 
 
 
 
#pragma once
#include "afxwin.h"
#include "afxcmn.h"
#include "geschaeftsadressen_class.h"//Daten
#include "kontaktpersonen.h"
#include "kontaktpersonen_AendernNeu.h"
#include "MouseOverListCtrl_Geschaeftsadressen.h"
#include "MyButton.h"//Diese Klasse ist nur dafür da das ich bitmaps auf disabled button
//andernfalls sehe ich nur ein dunkel graues Bild
//#include "MultiColumnComboBox.h"// ComboBox mit Column
#include "Multi_Column_Combobox_NEU.h" // ComboBox mit Column meine Klasse von CMultiColumnComboBox abgeleitet
 
 
// CGeschaeftsadressen-Dialogfeld
 
class CGeschaeftsadressen : public CDialog
{
	DECLARE_DYNAMIC(CGeschaeftsadressen)
 
public:
	//CGeschaeftsadressen(CWnd* pParent = NULL);   // Standardkonstruktor
 
	//CMultiColumnComboBox m_wndCombo; //ComboBox mit Column Rechnungsadressen
	CMulti_Column_ComboBox_NEU  m_wndCombo; //ComboBox mit Column Rechnungsadressen meine Klasse
 
	CGeschaeftsadressen(CWnd* pParent = NULL, int nSteuerung=0); // Standardkonstruktor
	virtual ~CGeschaeftsadressen();
 
// Dialogfelddaten
	enum { IDD = IDD_GESCHAEFTSADRESSEN };
 
 
 
protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV-Unterstützung
                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:

Select allOpen in new window

 

by: tsp2002Posted on 2009-10-27 at 00:39:18ID: 25669863

.......Can you check if the edit control and the combo box have the same parent window (the dialog) and the resource ID of the edit box really is IDC_EDIT_ADRESSE_RECHNUNG_ID? You can check both with 'Spy++' which is part of Visual Studio ...

Good Morning Zoppo,

I don´t know where to find and how to use the Spy++? Please advise.

My Visual Studio is 2003 Version 7.1.6030 Net Framework 1.1

 

by: ZoppoPosted on 2009-10-27 at 03:00:51ID: 25670600

Hi,

unfortunateley I can't exactly say where Spy++ is in VS 2003 - in VS 2005 and VS 2008 you can find it in the start menu 'Microsoft Visual Studio 2008->Visual Studio Tools'.

To find out the thing I asked you should comment out the code which makes problems so you can open the dialog without error, then in Spy++ you can use 'Search->Find Window' to get information about the both controls, i.e. see if they have the same parent and see the value of the 'Control-ID' of the edit control so you can compare it with the value defined for 'IDC_EDIT_ADRESSE_RECHNUNG_ID' in resource.h.

ZOPPO

 

by: tsp2002Posted on 2009-10-27 at 03:34:06ID: 25670773

resource.h.

#define IDC_EDIT_ADRESSE_RECHNUNG_ID 1332

please look at my hardcopies.....but I don´t know what to look for?????

 

by: ZoppoPosted on 2009-10-27 at 03:44:13ID: 25670820

ok, so far so good - easiest to find this out is to do following:

- start you application and open the dialog in question
- start Spy++ and select 'Search -> Find Window' (as shown in your second screenshot)
- Take the small cross hair at the right side of 'Suchtool:' with the mouse and drop it above the edit control 'IDC_EDIT_ADRESSE_RECHNUNG_ID'
- Now in the main window of Spy++ an entry containing info about that edit control should be selected - right click it and select 'Properties', then you should be able to see the 'Control ID' of the edit control in the up coming properties window's first tab.
- Next do the same (Search -> Find Window) and select the combo box in question - check that it has the same parent node as the edit control has.

ZOPPO

 

by: tsp2002Posted on 2009-10-27 at 05:54:05ID: 25671804

yes...I understand.....but they don´t have the same ID

534 and 565

  • bbb.BMP
    • 524 KB

    ID_MULTI_COMBO_RECHNUNGSADRESSEN Combobox

     ID_MULTI_COMBO_RECHNUNGSADRESSEN   Combobox
  • aaa.BMP
    • 477 KB

    IDC_EDIT_ADRESSE_RECHNUNG_ID Editbox

    IDC_EDIT_ADRESSE_RECHNUNG_ID   Editbox
 

by: ZoppoPosted on 2009-10-27 at 06:10:25ID: 25671963

That's ok, they must not have the same since they are two differen controls.

At least we now see the edit control has the correct ID (since 1332 == 0x534). Now you need to check whether these two controls have the same parent (which should be the dialog) - you can check it in the tab 'Fenster'.

ZOPPO

 

by: tsp2002Posted on 2009-10-27 at 06:17:58ID: 25672036

if we stuck here.....can I not call a function in Geschaeftsadressen.cpp

to add the CString that I will set to IDC_EDIT_ADRESSE_RECHNUNG_ID


void CMulti_Column_ComboBox_NEU::SelectCurrentItem(void)
{
int nIndex = GetCurrentItem();
CString strText;
CListCtrl* pList = GetListCtrl();
//------------------------------------------------------------------
if(NULL !=pList && nIndex >=0)
{

strText.Format("%s, %s, %s, %s", pList->GetItemText(nIndex,1),
pList->GetItemText(nIndex,2),
pList->GetItemText(nIndex,3),
pList->GetItemText(nIndex,6));


}
//------------------------------------------------------------------
GetEdit()->SetWindowText(strText);

 

CGeschaeftsadressen::Get_Adresse_ID_Rechnung(strText);

 
}

CGeschaeftsadressen::Get_Adresse_ID_Rechnung(strText);
================================================

but that will not work....I also got an error when I enclose Geschaeftsadressen.h

 

by: tsp2002Posted on 2009-10-27 at 06:23:44ID: 25672089

please take a look at my hardcopies

  • aaa.BMP
    • 500 KB

    IDC_EDIT_ADRESSE_RECHNUNG_ID Editbox

    IDC_EDIT_ADRESSE_RECHNUNG_ID Editbox
  • bbb.BMP
    • 512 KB

    ID_MULTI_COMBO_RECHNUNGSADRESSEN Combobox

    ID_MULTI_COMBO_RECHNUNGSADRESSEN Combobox
 

by: ZoppoPosted on 2009-10-27 at 06:34:53ID: 25672195

ok, still strange - IMO it should work - we now verified the edit control has the correct ID and is a sibling control of the combo box, so this code should in general work:

> void CMulti_Column_ComboBox_NEU::SelectCurrentItem(void)
> {
>
> ... // other stuff

> CWnd* pParent = GetParent();
> ASSERT( NULL != pParent );
> if ( NULL != pParent )
> {
>  CWnd* pEdit = pParent->GetDlgItem( IDC_EDIT_ADRESSE_RECHNUNG_ID );
>  ASSERT( NULL != pEdit );
>  if ( NULL != pEdit )
>  {
>   pEdit->SetWindowText( "Just a try!" );
>  }
> }


>> can I not call a function in Geschaeftsadressen.cpp
That's just what we try here - with 'GetParent' you should get a pointer to the parent dialog (which should be a 'CGeschaeftsadressen' instance). With 'GetDlgItem' we try to achieve a pointer to a CWnd representating the edit control with the ID 'IDC_EDIT_ADRESSE_RECHNUNG_ID'. Then the 'SetWindowText' should set the edit control's text.

IMO this is quite strait forward - I did such thing hundreds of times without problems - but it's hard to say what's going wrong within your code without seeing it completely and without the possibility to debug it ...

Regards,

ZOPPO

 

by: tsp2002Posted on 2009-10-27 at 07:00:21ID: 25672482

did you tried the same....I mean perhaps this strange thing comes from the customID, Subclass and multicolumncombobox class?

if not....is there any other way .... when the user changes/takes a choice of the MultiComboBox... that I got a notice in Geschaeftsadressen.cpp...thanks

 

 

by: ZoppoPosted on 2009-10-27 at 07:13:56ID: 25672622

I did exactly the same - I have a multi column combo box with three columns and a edit control within a dialog.

Attached you can see the 'SelectCurrentItem' I use - it works like a charm. IMO anything about the multi column combo box (ID, subclass a.s.o.) shouldn't matter, as long as the correct 'SelectCurrentItem' is called it should be possible from there to set the edit control's text.

ZOPPO

void CMyMultiColumnComboBox::SelectCurrentItem()
{
	int nIndex = GetCurrentItem();
 
	CString strText;
	CListCtrl* pList = GetListCtrl();
 
	if ( NULL != pList && nIndex >= 0 )
	{
		strText.Format( "%s, %s, %s", pList->GetItemText( nIndex, 0 ), pList->GetItemText( nIndex, 1 ), pList->GetItemText( nIndex, 2 ) );
	}
 
	GetEdit()->SetWindowText( strText );
 
	GetParent()->SetDlgItemText( IDC_EDIT_TEST, "Just a try!!!" );
 
	//Notify the parent that one item was changed
	if (nIndex >= 0)
		if (CWnd* pParent = GetParent())
			pParent->SendMessage(m_nSelChange, (WPARAM)GetDlgCtrlID(), (LPARAM)m_hWnd);
}

                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:

Select allOpen in new window

 

by: tsp2002Posted on 2009-10-27 at 07:21:06ID: 25672707


//##################################################################
void CMainFrame::OnGeschLieferanten()
{
CGeschaeftsadressen *pMeinDialog;
pMeinDialog = new CGeschaeftsadressen( AfxGetMainWnd(), 1 );
//pMeinDialog = new CGeschaeftsadressen;
pMeinDialog->mb_Kennzahl_first_show_up=true;
pMeinDialog->ShowWindow(SW_SHOW);
//hier die Steuerung/Übergabe von Wert 1 an Geschäftsadressen
//Dialog nSteuerung bzw. m_Kennzahl_komme_von_CMainFrame
}
//##################################################################

or does that have something to do with it.....this is the way I call  CGeschaeftsadressen Dialog from CMainFrame??? I am fishing....

 

by: ZoppoPosted on 2009-10-27 at 07:29:00ID: 25672779

I don't think this should affect what happens within the dialog - just for testing you could change implementation to use the dialog as a modal one, i.e. add these lines at the beginning of that function:

> CGeschaeftsadressen dlg;
> dlg.DoModal();
> return;

I don't think this makes a difference, but who knows - after testing you can delete these lines again.

BTW: Could you please post again the current version of the 'SelectCurrentItem' you use?

ZOPPO

 

by: tsp2002Posted on 2009-10-27 at 07:39:21ID: 25672894


//########################################################
void CMulti_Column_ComboBox_NEU::SelectCurrentItem(void)
{
int nIndex = GetCurrentItem();
CString strText;
CListCtrl* pList = GetListCtrl();
//------------------------------------------------------------------
if(NULL !=pList && nIndex >=0)
{

strText.Format("%s, %s, %s, %s", pList->GetItemText(nIndex,1),
pList->GetItemText(nIndex,2),
pList->GetItemText(nIndex,3),
pList->GetItemText(nIndex,6));


}
//------------------------------------------------------------------
GetEdit()->SetWindowText(strText);

//MemberVariable
//m_strAuswahl=strText;
 
//this is the original code
// if (nIndex >= 0)
// if (CWnd* pParent = GetParent())
// pParent->SendMessage(m_nSelChange, (WPARAM)GetDlgCtrlID(), (LPARAM)m_hWnd);

//-----------------------------------------------------------------
/*
CWnd* pParent = GetParent();
if ( NULL != pParent )
{
CWnd* pEdit = pParent->GetDlgItem( IDC_EDIT_ADRESSE_RECHNUNG_ID );
if ( NULL != pEdit )
{
pEdit->SetWindowText( "Just a try!" );
}
}



CWnd* pParent = GetParent();
ASSERT( NULL != pParent );
if ( NULL != pParent )
{
CWnd* pEdit = pParent->GetDlgItem( IDC_EDIT_ADRESSE_RECHNUNG_ID );
ASSERT( NULL != pEdit );
if ( NULL != pEdit )
{
pEdit->SetWindowText( "Just a try!" );
}
}
GetParent()->SetDlgItemText( IDC_EDIT_ADRESSE_RECHNUNG_ID , "Just a try!!!" );
*/
//-----------------------------------------------------------------
}
//########################################################

 

by: ZoppoPosted on 2009-10-27 at 07:42:10ID: 25672917

ok, what happens if you uncomment the second part which start with 'CWnd* pParent = GetParent();'? Do you see an ASSERTION?

 

by: tsp2002Posted on 2009-10-27 at 07:51:31ID: 25673022


CWnd* pParent = GetParent();
ASSERT( NULL != pParent );

you mean this alone? no stop or error

Do you see an ASSERTION?Sorry don´t know what that means

 

by: ZoppoPosted on 2009-10-27 at 08:04:54ID: 25673198

I meant if you use the complete attached code.

With assertion I meant if a dialog pops up looking like the attached bitmap - this will only happen if your application is built using the DEBUG configuration ...

...
 CWnd* pParent = GetParent();
 ASSERT( NULL != pParent );
 if ( NULL != pParent )
 {
  CWnd* pEdit = pParent->GetDlgItem( IDC_EDIT_ADRESSE_RECHNUNG_ID );
  ASSERT( NULL != pEdit );
  if ( NULL != pEdit )
  {
   pEdit->SetWindowText( "Just a try!" );
  }
 }
...

                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:

Select allOpen in new window

 

by: tsp2002Posted on 2009-10-27 at 09:58:21ID: 25674736

okay...I understand...will try tomorrow at my office PC....have a great evening...Feierabend

 

by: tsp2002Posted on 2009-10-28 at 01:05:43ID: 25680771

I changed my project to debug modus.....

 

When I put here a breakpoint
SelectCurrentItem(void)
GetEdit()->SetWindowText(strText); <--------------- it stops

but it will not stop
CWnd* pParent = GetParent();
ASSERT( NULL != pParent );..... see bitmap breakpoint with ?

When I start the debug ..... I got the error with the ID.....when I then press continue.....

the program runs.....but no effect of the GetParent code

 

by: tsp2002Posted on 2009-10-28 at 01:16:33ID: 25680838

I changed my project to debug modus..... sorry will not work

proberties of Object...can not change to debug

 

by: ZoppoPosted on 2009-10-28 at 02:48:48ID: 25681311

So you mean your project doesn't compile in DEBUG configuration? That's not good ... I guess that the breakpoints aren't hit because the build failed so the previously built EXE is executed which has no relation to the changed code - you should try to resolve the compile errors in DEBUG configuration ...

Well, since I find it's quite difficult to solve this problem without a chance to test it I want to ask you if you either could attach your project here within a ZIP file (if it's not too large or too secret) or if you could try to make a small new test project with just one dialog, one multi colum combo box (which should use your current CMulti_Column_ComboBox_NEU class) and an edit box. If you get setting the text working maybe you can find the difference yourself, if you have the same problems in that test project you could attach it here so I could try to find the problem here ...

ZOPPO

 

by: tsp2002Posted on 2009-10-28 at 03:46:09ID: 25681682

Hello Zoppo,

thanks for your offer. The thing is that today is my last day before my vacation.

I am going on vacation tomorrow for 2 1/2 weeks.

I give you the points....even if we didn´t find a solution.  I try to send you a text object....but I don´t know if I have enough time....because of my last day before vacation and I am in my office....had have some work to do.

If not....I will ask the question in mid. Nov. again.

Best regards,

Thomas

 

by: ZoppoPosted on 2009-10-28 at 04:14:39ID: 25681898

Well, I don't have a problem if we just keep this question open - no need to give me points before it's solved.

IMO it's even better to keep this question open since without a solution it shouldn't be moved to the PAQ.

I wish you a nice vacation ...

best regards,

ZOPPO

 

by: tsp2002Posted on 2009-10-28 at 05:22:18ID: 25682396

okay...great....I forgot that I have a sample of the program just on Dialog.....

I just added a Editbox.....same result as my main program....can not find ID

I just tried to add my zip....but this site will not allow my files

The extension of one or more files in the archive is not in the list of allowed extensions: ComboBox_with_Column.cpp

 

by: tsp2002Posted on 2009-10-28 at 06:04:45ID: 25682742

Thank you Zoppo...will talk in KW 47 again.

Have a great day.

Best regards,

Thomas

 

by: tsp2002Posted on 2009-11-19 at 00:43:39ID: 25858590

Hello Zoppo,

I am back from my nice vacation.

I post all my steps (step by step) for you. If you do the same you should not be able to send the example text to the Editbox. Is there a mistake in my steps?

Please let me know. Thank you.

Best regards,

Thomas

 

by: ZoppoPosted on 2009-11-19 at 01:51:57ID: 25858898

Hi again,

seems you enjoyed your vacancy ...

Well, I'm a little bit off-topic, but as far as I can see this are the same steps I did - and for me it works.

Just to clearify: This sample does compile well but no text appears in the edit box, right?

Are you now able to build that application as a DEBUG build? If so you should debug through the CComboBoxNEU::SelectCurrentItem.

ZOPPO

 

by: tsp2002Posted on 2009-11-19 at 02:08:25ID: 25858968

Hi Zoppo,

......Just to clearify: This sample does compile well but no text appears in the edit box, right?

Yes....that is correct.

......Are you now able to build that application as a DEBUG build?

please look at my hardcopies....did you mean that?

Please help, Thank you

Thomas

------ Neues Erstellen gestartet: Projekt: MyComboBox, Konfiguration: Debug Win32 ------
 
Die Zwischen- und Ausgabedateien für das Projekt "MyComboBox" mit der Konfiguration "Debug|Win32" werden gelöscht.
Kompilieren...
stdafx.cpp
Kompilieren...
MyComboBoxDlg.cpp
c:\Dokumente und Einstellungen\Thomas Stockbruegger\Eigene Dateien\Visual Studio Projects\MyComboBox\MultiColumnComboBox.h(51) : warning C4311: 'Typumwandlung': Zeigerverkürzung von 'WNDPROC' zu 'long'
c:\Dokumente und Einstellungen\Thomas Stockbruegger\Eigene Dateien\Visual Studio Projects\MyComboBox\MultiColumnComboBox.h(51) : warning C4312: 'Typumwandlung': Konvertierung von 'LONG' in größeren Typ 'WNDPROC'
c:\Dokumente und Einstellungen\Thomas Stockbruegger\Eigene Dateien\Visual Studio Projects\MyComboBox\MultiColumnComboBox.h(56) : warning C4311: 'Typumwandlung': Zeigerverkürzung von 'WNDPROC' zu 'long'
MyComboBox.cpp
c:\Dokumente und Einstellungen\Thomas Stockbruegger\Eigene Dateien\Visual Studio Projects\MyComboBox\MultiColumnComboBox.h(51) : warning C4311: 'Typumwandlung': Zeigerverkürzung von 'WNDPROC' zu 'long'
c:\Dokumente und Einstellungen\Thomas Stockbruegger\Eigene Dateien\Visual Studio Projects\MyComboBox\MultiColumnComboBox.h(51) : warning C4312: 'Typumwandlung': Konvertierung von 'LONG' in größeren Typ 'WNDPROC'
c:\Dokumente und Einstellungen\Thomas Stockbruegger\Eigene Dateien\Visual Studio Projects\MyComboBox\MultiColumnComboBox.h(56) : warning C4311: 'Typumwandlung': Zeigerverkürzung von 'WNDPROC' zu 'long'
MultiColumnComboBox.cpp
c:\Dokumente und Einstellungen\Thomas Stockbruegger\Eigene Dateien\Visual Studio Projects\MyComboBox\MultiColumnComboBox.h(51) : warning C4311: 'Typumwandlung': Zeigerverkürzung von 'WNDPROC' zu 'long'
c:\Dokumente und Einstellungen\Thomas Stockbruegger\Eigene Dateien\Visual Studio Projects\MyComboBox\MultiColumnComboBox.h(51) : warning C4312: 'Typumwandlung': Konvertierung von 'LONG' in größeren Typ 'WNDPROC'
c:\Dokumente und Einstellungen\Thomas Stockbruegger\Eigene Dateien\Visual Studio Projects\MyComboBox\MultiColumnComboBox.h(56) : warning C4311: 'Typumwandlung': Zeigerverkürzung von 'WNDPROC' zu 'long'
c:\Dokumente und Einstellungen\Thomas Stockbruegger\Eigene Dateien\Visual Studio Projects\MyComboBox\MultiColumnComboBox.cpp(244) : warning C4311: 'Typumwandlung': Zeigerverkürzung von 'CMultiColumnComboBox *const ' zu 'long'
c:\Dokumente und Einstellungen\Thomas Stockbruegger\Eigene Dateien\Visual Studio Projects\MyComboBox\MultiColumnComboBox.cpp(534) : warning C4244: 'Initialisierung': Konvertierung von 'LRESULT' in 'UINT', möglicher Datenverlust
ComboBoxNEU.cpp
c:\Dokumente und Einstellungen\Thomas Stockbruegger\Eigene Dateien\Visual Studio Projects\MyComboBox\MultiColumnComboBox.h(51) : warning C4311: 'Typumwandlung': Zeigerverkürzung von 'WNDPROC' zu 'long'
c:\Dokumente und Einstellungen\Thomas Stockbruegger\Eigene Dateien\Visual Studio Projects\MyComboBox\MultiColumnComboBox.h(51) : warning C4312: 'Typumwandlung': Konvertierung von 'LONG' in größeren Typ 'WNDPROC'
c:\Dokumente und Einstellungen\Thomas Stockbruegger\Eigene Dateien\Visual Studio Projects\MyComboBox\MultiColumnComboBox.h(56) : warning C4311: 'Typumwandlung': Zeigerverkürzung von 'WNDPROC' zu 'long'
c:\Dokumente und Einstellungen\Thomas Stockbruegger\Eigene Dateien\Visual Studio Projects\MyComboBox\ComboBoxNEU.cpp(31) : error C2065: 'IDC_EDIT1': nichtdeklarierter Bezeichner
Generieren von Code...
 
Das Build-Protokoll wurde unter "file://c:\Dokumente und Einstellungen\Thomas Stockbruegger\Eigene Dateien\Visual Studio Projects\MyComboBox\Debug\BuildLog.htm" gespeichert.
MyComboBox - 1 Fehler, 14 Warnung(en)
 
 
---------------------- Fertig ----------------------
 
    Neues Erstellen: 0 erfolgreich, 1 fehlgeschlagen, 0 übersprungen
                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:

Select allOpen in new window

 

by: ZoppoPosted on 2009-11-19 at 02:13:13ID: 25858992

ok, this means the project doesn't compile, the reason is 'error C2065: 'IDC_EDIT1': nichtdeklarierter Bezeichner'

IMO the problem is that 'resource.h' isn't included in ComboBoxNEU.cpp - just add this line
> #include "resource.h"
somewhere below the line
> #include "stdafx.h"
(somehow like in the attached code)

I hope this helps,

ZOPPO

#include "stdafx.h"
#indlude "resource.h"
#include "ComboBoxNEU.h"
...

                                              
1:
2:
3:
4:

Select allOpen in new window

 

by: tsp2002Posted on 2009-11-19 at 02:49:18ID: 25859168

wow....wow...wow....what a simple mistake....now it works !!!!!!!

That was a long try and error, thank you so much.

Great work Zoppo.

Thanks for all your help.

Best regards....keep up the good work

Thomas

 

P.S. after I left you points in a minute....I have a new question.....it kind of belongs to the combobox....Please take a look....I hope you can help me.

 

by: tsp2002Posted on 2009-11-19 at 02:49:45ID: 31645878

super great work......Top

 

by: ZoppoPosted on 2009-11-19 at 02:51:19ID: 25859185

You're welcome, I'm glad I could help ... and thanks for compliments :o)

I'll take a look for coming questions.

Have a nice day,

best regards,

ZOPPO

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...