por rochinha » 02 Dez 2005 19:20
Amiguinho
Utilizamos ID somente quando desenhamos uma Dialog pelo WorkShop.
Neste caso ao colocar o controle na tela voce define um numero que não pode ser repetido dentro do conjunto de controles da janela sendo definida e ai acessa via comandos.
Veja o exemplo destes vinculos:
No combos.CH:
#define ID_SIMPLE 110
#define ID_DROPDOWN 120
#define ID_DROPDOWNLIST 130
#define ID_SELECTION 140
#define IDC_RADIOBUTTON1 111
#define IDC_CHECKBOX2 113
No combos.RC:
#include <commctrl.h>
#include "WinApi.ch"
#include "Combos.ch"
Combos DIALOG 22, 74, 174, 97
STYLE DS_MODALFRAME | 0x4L | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Testing all ComboBoxes styles"
FONT 8, "Arial"
{
COMBOBOX ID_SIMPLE, 7, 6, 49, 56, CBS_SIMPLE | CBS_DISABLENOSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP
COMBOBOX ID_DROPDOWN, 62, 6, 49, 52, CBS_DROPDOWN | WS_CHILD | WS_VISIBLE | WS_TABSTOP
COMBOBOX ID_DROPDOWNLIST, 117, 6, 49, 52, CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE | WS_TABSTOP
LTEXT "&Selection:", -1, 11, 80, 32, 8
LTEXT "_______________________", ID_SELECTION, 47, 80, 72, 8, WS_CHILD | WS_VISIBLE | WS_GROUP
PUSHBUTTON "&Done", IDOK, 137, 76, 31, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
RADIOBUTTON "Radio", IDC_RADIOBUTTON1, 63, 24, 60, 12, BS_AUTORADIOBUTTON
CHECKBOX "Checkbox", IDC_CHECKBOX2, 63, 37, 60, 12, BS_AUTOCHECKBOX | WS_TABSTOP
}
No .PRG:
#include "FiveWin.ch"
#include "Combos.ch"
function Main()
local oDlg, oSay
local oCbx1, oCbx2, oCbx3
local cItem1, cItem2 := "One", cItem3, cItem4 := "None"
SET _3DLOOK ON
DEFINE DIALOG oDlg RESOURCE "Combos"
REDEFINE COMBOBOX oCbx1 VAR cItem1 ITEMS { "One", "Two", "Three" } ;
ID ID_SIMPLE OF oDlg ;
ON CHANGE ( cItem4 := cItem1, oSay:Refresh() ) ;
VALID (oCbx2:SetFocus(), cItem4 := cItem1, oSay:Refresh() )
REDEFINE COMBOBOX oCbx2 VAR cItem2 ITEMS { "One", "Two", "Three" } ;
ID ID_DROPDOWN OF oDlg ;
STYLE CBS_DROPDOWN ;
ON CHANGE ( cItem4 := cItem2, oSay:Refresh() ) ;
VALID ( If( ! oCbx2:Find( oCbx2:oGet:GetText() ),;
oCbx2:Add( oCbx2:oGet:GetText() ),), .t. )
REDEFINE COMBOBOX oCbx3 VAR cItem3 ITEMS { "One", "Two", "Three" } ;
ID ID_DROPDOWNLIST OF oDlg ;
ON CHANGE ( cItem4 := cItem3, oSay:Refresh() ) ;
VALID ( cItem4 := cItem3, oSay:Refresh(), .t. )
REDEFINE SAY oSay PROMPT cItem4 ID ID_SELECTION OF oDlg COLOR "R+/W"
ACTIVATE DIALOG oDlg CENTERED
return nil
No exemplo acima se voce abrir o .RC no WorkShop podera ver nas propriedades dos controles COMBOBOX o numero constante no combos.CH
@braços :?)