Jump to content
СофтФорум - всё о компьютерах и не только

Проблемы с ComboBox в Microsoft Visual Basic 6.0


Recommended Posts

В Microsoft Visual Basic 6.0 нужно сделать следующее,

При записи в Text 1 и Text2 (это будет Имя и Фамилия) они сохранялись в файле,

А затем имя и фамилия должны загружаться в общий список который находится

В Combo1 (ComboBox)

Да и главное как сделать так чтобы можно было вводить неограниченное количество

имен и фамилий

Помогите кто знает (если нетрудно накидайте пример в Visual Basic 6.0 )

Заранее благодарен

Link to comment
Share on other sites

ниже привожу код модуля формы на которой распожены 2 кнопки, два текстовых поля и один комбо бокс, названия элементов после создания не изменялись

Option Explicit

Private FilePath As String 'локальная переменная данного модуля формы

'содержит путь к файлу, в данном листинге задается при загрузке формы

'процедура записи строки в файл, файл дополняется новыми данными а не

'переписывается целиком

'строка для записи=текст1 + пробелы + текст2

Private Sub Save_Data_In_File()

Dim FileNo As Integer

Dim CurrentString As String

CurrentString = Text1 & " " & Text2

FileNo = FreeFile

Open FilePath For Append As FileNo

Print #FileNo, CurrentString

Close FileNo

End Sub

'процедура чтения из файла, чтает все строки и заносит их в

'предвыарительно очищенный комбобокс

Private Sub Load_Data_From_File()

Dim FileNo As Integer

Dim CurrentString As String

Combo1.Clear

FileNo = FreeFile

Open FilePath For Input As FileNo

Do Until EOF(FileNo)

Line Input #FileNo, CurrentString

Combo1.AddItem CurrentString

Loop

Close FileNo

End Sub

Private Sub Command1_Click()

'вызов записи

Save_Data_In_File

End Sub

Private Sub Command2_Click()

'вызов чтения

Load_Data_From_File

End Sub

Private Sub Form_Load()

FilePath = "c:\Test.txt"

End Sub

Link to comment
Share on other sites

  • 1 year later...

Есть вопрос по поводу ComboBox в Delphi, при работе на чистом WinAPI.

Есть код:

program winmin;uses windows,messages;varwc:TWndClassEx;MainWnd,cmb:HWND;Mesg:TMsg;str:string; function WindowProc(wnd:HWND;Msg:Integer;Wparam:Wparam;Lparam:Lparam):Lresult;stdcall; begin if msg=wm_destroy thenbeginpostquitmessage(0);Result:=0;exit;end else Result:=DefWindowProc(wnd,msg,wparam,lparam); end;var xPos,yPos,nWidth,nHeight:Integer;beginwc.cbSize:=sizeof(wc);wc.style:=cs_hredraw or cs_vredraw;wc.lpfnWndProc:=@WindowProc;wc.cbClsExtra:=0;wc.cbWndExtra:=0;wc.hInstance:=HInstance;wc.hIcon:=LoadIcon(0,idi_application);wc.hCursor:=LoadCursor(0,idc_arrow);wc.hbrBackground:=COLOR_BTNFACE+1;wc.lpszMenuName:=nil;wc.lpszClassName:='WinMin:Main';RegisterClassEx(wc);xPos:=1;yPos:=1;nWidth:=260;nHeight:=260;//Создание главного окнаMainWnd:=CreateWindowEx ( WS_EX_APPWINDOW,'WinMin:Main','dynamic form caption', ws_overlappedwindow, xPos,yPos,nWidth,nHeight,0,0, Hinstance,nil );ShowWindow(MainWnd,CmdShow);//Создание comboboxcmb:=CreateWindowEx ( 0,'COMBOBOX','combo caption', WS_CHILD or WS_VISIBLE or WS_TABSTOP or WS_VSCROLL or CBS_DROPDOWN or CBS_HASSTRINGS or CBS_OWNERDRAWFIXED, xPos+10,yPos+20,200,100,MainWnd,0, Hinstance,nil );str:='first';//Добавление элементаSendMessage(cmb,CB_ADDSTRING,0,dword(str));While GetMessage(Mesg,0,0,0) do begin TranslateMessage(Mesg); DispatchMessage(Mesg) endend.

Вся фишка в том, что элемент добавляется в Combobox, но его надписи не видно!? :doh:

И при нажатии на него он нормально выделяется, тоесть его текст как и должен вставляется в поле.

А если ещё вот так:

program winmin;uses windows,messages;varwc:TWndClassEx;MainWnd,cmb:HWND;Mesg:TMsg;str:string; function WindowProc(wnd:HWND;Msg:Integer;Wparam:Wparam;Lparam:Lparam):Lresult;stdcall; begin if msg=wm_destroy thenbeginpostquitmessage(0);Result:=0;exit;end else Result:=DefWindowProc(wnd,msg,wparam,lparam); end;var xPos,yPos,nWidth,nHeight:Integer;beginwc.cbSize:=sizeof(wc);wc.style:=cs_hredraw or cs_vredraw;wc.lpfnWndProc:=@WindowProc;wc.cbClsExtra:=0;wc.cbWndExtra:=0;wc.hInstance:=HInstance;wc.hIcon:=LoadIcon(0,idi_application);wc.hCursor:=LoadCursor(0,idc_arrow);wc.hbrBackground:=COLOR_BTNFACE+1;wc.lpszMenuName:=nil;wc.lpszClassName:='WinMin:Main';RegisterClassEx(wc);xPos:=1;yPos:=1;nWidth:=260;nHeight:=260;MainWnd:=CreateWindowEx ( WS_EX_APPWINDOW,'WinMin:Main','dynamic form caption', ws_overlappedwindow, xPos,yPos,nWidth,nHeight,0,0, Hinstance,nil );ShowWindow(MainWnd,CmdShow);cmb:=CreateWindowEx ( 0,'COMBOBOX','combo caption', WS_CHILD or WS_VISIBLE or WS_TABSTOP or WS_VSCROLL or CBS_DROPDOWNLIST or CBS_HASSTRINGS or CBS_OWNERDRAWFIXED, xPos+10,yPos+20,200,100,MainWnd,0, Hinstance,nil );str:='first';SendMessage(cmb,CB_ADDSTRING,0,dword(str));While GetMessage(Mesg,0,0,0) do begin TranslateMessage(Mesg); DispatchMessage(Mesg) endend.

Тут тоже самое, но ещё к тому же текст не вставляется в поле, а должен!? :) :(

Кто знает в чём тут дело помогите, заранее очень признателен.

P.S.

На других языках под Win32 тоже самое, например MASM.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...