 |
|
|
|
|
|
|
Criação de um controle de cliente Atlas: RadioButtonList
Thursday, July 13, 2006 5:33 PM
A versão cliente de um controle que não foi implementado ainda nesta Release de Junho do Atlas e que eu precisava usar é o RadioButtonList. Como não tive muita escolha tive que implementar a minha própria versão. Eu usei como base o código fonte do controle Sys.UI.Select para criar este controle. O código segue abaixo:
Sys.UI.RadioButtonList = function(associatedElement) {
Sys.UI.RadioButtonList.initializeBase( this, [associatedElement]);
var _selectionChangedHandler;
var _data;
var _dataChangedDelegate;
var _textProperty;
var _valueProperty;
var _table;
var _tbody;
this.get_data = function() {
return _data;
}
this.set_data = function(data) {
if (_data && Sys.INotifyCollectionChanged.isImplementedBy(_data)) {
_data.collectionChanged.remove(_dataChangedDelegate);
}
_data = data;
if (_data) {
if (!Sys.Data.DataTable.isInstanceOfType(_data)) {
_data = new Sys.Data.DataTable([], _data);
}
_data.collectionChanged.add(_dataChangedDelegate);
}
dataBind.call( this);
this.raisePropertyChanged('data');
}
this.get_selectedValue = function() {
var i;
var buttonList = document.getElementsByName(this.get_id());
for (i = 0; i < buttonList.length; i++) {
if (buttonList[i].checked) {
return buttonList[i].value;
}
}
}
this.set_selectedValue = function(value) {
var i;
var buttonList = document.getElementsByTagName(this.id);
for (i = 0; i < buttonList.length; i++) {
if (buttonList[i].value == value) {
buttonList[i].checked = true;
break;
}
}
}
this.get_textProperty = function() {
return _textProperty;
}
this.set_textProperty = function(name) {
_textProperty = name;
this.raisePropertyChanged('textProperty');
}
this.get_valueProperty = function() {
return _valueProperty;
}
this.set_valueProperty = function(name) {
_valueProperty = name;
this.raisePropertyChanged('valueProperty');
}
this.get_tableElement = function() {
if (!_tbody) {
_table = document.createElement('TABLE');
_tbody = document.createElement('TBODY');
_table.appendChild(_tbody);
this.element.appendChild(_table);
}
return _tbody;
}
this.selectionChanged = this.createEvent();
function dataBind() {
var i;
for (i = _tbody.childNodes.length - 1; i >= 0; i--) {
_tbody.removeChild(_tbody.childNodes[i]);
}
if (_data) {
var length = _data.get_length();
var id = this.get_id();
for (i = 0; i < length; i++) {
var item = _data.getItem(i);
var text = Sys.TypeDescriptor.getProperty(item, _textProperty);
var value = Sys.TypeDescriptor.getProperty(item, _valueProperty);
var tr = document.createElement('TR');
var td = document.createElement('TD');
var radioButton = document.createElement('<INPUT NAME="' + id + '" />');
radioButton.name = id;
radioButton.id = id + '_' + i;
radioButton.type = 'RADIO';
radioButton.value = value;
var label = document.createElement('LABEL');
label.htmlFor = radioButton.id;
label.innerHTML = text;
td.appendChild(radioButton);
td.appendChild(label);
tr.appendChild(td);
_tbody.appendChild(tr);
}
}
}
_dataChangedDelegate = Function.createDelegate( this, dataBind);
this.dispose = function() {
if (_selectionChangedHandler) {
this.element.detachEvent('onchange', _selectionChangedHandler);
_selectionChangedHandler = null;
}
if (_table) {
_table = null;
}
Sys.UI.RadioButtonList.callBaseMethod( this, 'dispose');
}
this.getDescriptor = function() {
var td = Sys.UI.RadioButtonList.callBaseMethod(this, 'getDescriptor');
td.addProperty("data", Sys.Data.DataTable);
td.addProperty('selectedValue', String);
td.addProperty('textProperty', String);
td.addProperty('valueProperty', String);
td.addEvent('selectionChanged', true);
return td;
}
Sys.UI.RadioButtonList.registerBaseMethod( this, 'getDescriptor');
this.initialize = function() {
_table = document.createElement('TABLE');
_tbody = document.createElement('TBODY');
_table.appendChild(_tbody);
this.element.appendChild(_table);
Sys.UI.RadioButtonList.callBaseMethod( this, 'initialize');
_selectionChangedHandler = Function.createDelegate( this, this._onSelectionChanged);
this.element.attachEvent('onchange', _selectionChangedHandler);
}
this._onSelectionChanged = function() {
this.raisePropertyChanged('selectedValue');
this.selectionChanged.invoke(this, Sys.EventArgs.Empty);
}
}
Sys.UI.RadioButtonList.registerClass('Sys.UI.RadioButtonList', Sys.UI.Control);
Sys.TypeDescriptor.addType('script', 'radioButtonList', Sys.UI.RadioButtonList);
70-316 - Questão 18
Tuesday, July 04, 2006 2:21 PM
18) Você deseja reduzir a quantidade de tempo necessária para que o
formulário inicial da sua aplicação seja carregado. Qual das seguintes
ferramentas seria a mais útil para ajudá-lo?
A) Sn.exe
B) Gacutil.exe
C) Caspol.exe
D) Ngen.exe
70-316 - Questão 16
Monday, July 03, 2006 4:41 PM
16) Você precisa realizar alterações em uma aplicação desenvolvida por
um ex-funcionário da empresa onde você trabalha atualmente. A aplicação
contém um objeto MainMenu chamando myMainMenu. Uma das alterações
consiste em exibir uma parte do menu principal da aplicação,
MenuEditItem, em um menu de contexto quando o usuário da aplicação
clicar com o botão direito do mouse sobre uma caixa de texto da
aplicação. Você adicionou um objeto ContextMenu ao formulário principal
da aplicação e deu a ele o nome de PopupMenu. Você deseja escrever o
menor número de linhas possível para criar o menu de contexto. O que
você deve fazer?
A) PopupMenu.MenuItems.Add(MenuEditItem.CloneMenu());
B) PopupMenu = MenuEditItem;
C) PopupMenu.MenuItems = MenuEditItem.MenuItems;
D) PopupMenu = MenuEditItems.CloneMenu();
70-316 - Questão 15
Monday, July 03, 2006 3:41 PM
15) Você deseja criar uma transação, contudo você deseja que não seja
possível modificar registros no DataSet até que a transação tenha sido
finalizada. Qual o nível de isolamento você deve utilizar?
A) ReadCommited
B) ReadUncommited
C) RepeatableRead
D) Serializable
70-316 - Questão 14
Friday, June 30, 2006 7:30 PM
14) Você está utilizando o Visual Studio .NET para criar uma aplicação
Windows Forms que acompanhará as vendas de uma empresa. Ao objeto
principal da sua aplicação você deu o nome de MyCompany. A classe que
MyCompany é criada usando a seguinte definição:
public class MyCompany { }
Você escreveu código para definir o valor de algumas propriedades da
classe MyCompany e este código deve ser executado assim que uma
instância da classe MyCompany for criada. Agora você precisa criar um
método no qual você irá colocar o seu código. Qual segmento de código
você deve utilizar?
A) public MyCompany()
B) public void MyCompanny()
C) public bool MyCompany()
D) public New()
E) public MyCompany New()
F) public MyCompany MyCompany()
70-316 - Questão 13
Friday, June 30, 2006 4:43 PM
13) Você está usando o Visual Studio.NET para desenvolver uma aplicação
que contém 50 formulários. Você criou um método chamado
PerformCalculations, o qual escreve os resultados de diversos cálculos
internos na janela Debug. Estes cálculos demoram mais de um minuto para
serem executados. Além disso, você quer compilar duas versões da
aplicação, uma para depuração e outra distribuição. A versão de
depuração deve executar os cálculos, já a versão de distribuição não
deve incluir ou compilar o código que executa os cálculos. Para
alcançar estes objetivos, você deve utilizar o mínimo possível de
código. Quais são as duas ações que você deve tomar? (Cada resposta
correta apresenta parte da solução. Escolha duas)
A) Utilize o seguinte fragmento de código: #if DEBUG // Insira o código para executar os cálculos #endif
B) Utilize o seguinte fragmento de código: If (DEBUG) { // Insira o código para executar os cálculos }
C) Use o seguinte fragmento de código na primeira linha do arquivo que contém o código que executa os cálculos: #define DEBUG
D) Adicione “DEBUG = true” à caixa de texto Command Line Arguments
no painel Debugging da caixa de diálogo de propriedades do projeto
E) Certifique-se que a opção Conditional Compilation Constants no
painel Build da caixa de diálogo propriedades do projeto contém o valor
“DEBUG”
F) Certifique-se que a opção Conditional Compilation Constants no
painel Build da caixa de diálogo propriedades do projeto contém o valor
“TRACE”
70-316 - Questão 12
Friday, June 30, 2006 4:25 PM
12) Você é um desenvolvedor de uma empresa que disponibiliza software
gratuito pela Internet. Você está desenvolvendo uma aplicação de e-mail
que os usuários de qualquer parte do mundo podem fazer download. Esta
aplicação exibe diversas informações textuais na sua interface com o
usuário. Em tempo de execução, estes textos devem aparecer no idioma
apropriado de acordo com as configurações regionais do computador que
estiver executando a aplicação. Você tem recursos para desenvolver
versões apenas para quatro culturas diferentes. Você deve garantir que
a sua aplicação poderá também ser utilizada pode pessoas de outras
culturas. Como você deve preparar a sua aplicação para distribuí-la.
A)
Criar um assembly diferente para cada cultura
B)
Criar um arquivo executável diferente para cada cultura
C)
Criar um assembly principal para o código fonte e para a cultura padão Criar satellite assemblies para as demais culturas
D)
Criar um assembly principal para o código fonte Criar satellite assemblies para cada cultura
70-316 - Questão 11
Friday, June 30, 2006 10:36 AM
11) Você criou um formulário chamado companyForm. Este formulário
possibilita que os usuários façam manutenção dos registros armazenados
na tabela Company. Você precisa adicionar ao formulário companyForm
diversos pares de controles. Além disso, você deve satisfazer os
seguintes requisitos:
• Cada par de controles deve representar uma coluna da tabela Comapany. • Cada par é composto por um controle TextBox e por um controle Label. • O evento LostFocus de cada controle TextBox deve fazer chamada a um método chamado UpdateDatabase. • Formulários similares ao companyForm deverão ser criados para outras tabelas no banco de dados. • O desempenho da aplicação deve ser otimizado. • A quantidade de código necessária para obter o resultado esperado deve ser mínima.
O que você deve fazer?
A)
Criar e selecionar um controle TextBox e um controle Label Escrever o código apropriado para tratar o evento LostFocus do controle TextBox Copiar
e colar os controles repetidamente no formulário companyForm até ter um
par de controles para cada coluna da tabela Company Repetir este processo para outros formulários
B)
Adicionar um controle TextBox e um controle Label ao formulário companyForm Escrever o código apropriado para tratar o evento LostFocus do controle TextBox Criar array de controles contendo os controles TextBox e Label Em
tempo de execução, adicionar pares de controles ao array de controles
até que cada coluna da tabela Company tenha um par de controles Repetir este processo para os outros formulários
C)
Criar um novo UserControl que inclua um controle TextBox e um controle Label Escrever o código apropriado para tratar o evento LostFocus do controle TextBox Para cada coluna da tabela Company, adicionar uma instância do UserControl ao formulário companyForm Repetir este processo para os outros formulários
D)
Criar um novo controle ActiveX que contenha um controle TextBox e um controle Label Para cada coluna da tabela Company, adicionar uma instância do controle ActiveX ao formulário companyForm Repetir este processo com os demais formulários
70-316 - Questão 10
Thursday, June 29, 2006 5:33 PM
10) Você está utilizando o Visual Studio .NET para criar um controle
que será utilizado em vários formulários da sua aplicação. Este
controle é um Label customizado que obtém o preço atual das ações da
empresa e o exibe. Alguns dos formulários nos quais este controle deve
ser colocado possuem diferentes cores no plano de fundo. Você deseja
que o controle seja o mais básico possível e que o valor das ações
esteja sempre visível e legível para os usuários da aplicação, contudo
a área retangular que define o controle não deve estar visível aos
olhos do usuário. Para tal, é necessário adicionar código ao evento
Load do controle. Quais são os dois segmentos de códigos que devem ser
utilizados? (Cada resposta correta representa parte da solução. Escolha
duas)
A) this.BackColor = Color.Transparent;
B) this.ForeColor = Color.Transparent;
C) this.BackImage = null;
D) this.SetStyle(ControlStyles.UserPaint, false);
E) this.SetStyle(ControlStyles.SupportsTransparentBackgroundColor, true);
70-316 - Questão 09
Thursday, June 29, 2006 2:56 PM
Esta é sobre games... (se é que dá para se dizer isto) Portanto, foi feita pro Shinji =)
---
9) Você está utilizando o Visual Studio .NET a fim de criar uma
aplicação Windows Forms para um jogo online. Cada usuário irá executar
a versão cliente da aplicação no seu computador local. No jogo, cada
usuário controla dois pelotões de soldados: o Pelotão Alfa e o Pelotão
Beta. Você criou um item de menu cujo título é Pelotões. Abaixo deste
item, você criou dois subitens. Ao primeiro deles você deu o nome de
alfaSubmenu e o título de “Esquadrão Alfa”. Já ao outro, você deu o
nome de betaSubmenu e o título de “Esquadrão Beta”. Quando o usuário
selecionar o menu Pelotões os dois subitens serão exibidos. O usuário
poderá selecionar apenas um pelotão de soldados por vez e ser capaz de
alternar entre um pelotão e outro de duas formas. A primeira é
selecionando o pelotão desejado através da barra de menus. A segunda é
utilizando as seguintes teclas de atalho: Ctrl+A (para selecionar o
Pelotão Alfa) ou Ctrl+B (para selecionar o Pelotão Beta). Você deve
também se certificar de que o pelotão que está em selecionado será
indicado com um marcador ao lado do subitem de menu correspondente.
Além disso, você não deseja mudar o título de nenhum dos itens de menu
que você definiu. Quais são as quatro ações que você deve tomar para
obter o resultado esperado? (Cada resposta correta representa parte da
solução. Escolha quatro)
A)
Atribua o valor “Pelotão &Alfa” à propriedade Text do subitem de menu alfaSubmenu Atribua o valor “Pelotão &Beta” à propriedade Text do subitem de menu betaSubmenu
B)
Atribua à propriedade alfaSubmenu.Shortcut o valor “CtrlA” Atribua à propriedade betaSubmenu.Shortcut o valor “CtrlB”
C)
No método que trata o evento alfaSubmenu.Click, utilize o seguinte fragmento de código: alfaSubmenu.DefaultItem = true; No método que trata o evento betaSubmenu.Click, utilize o seguinte fragmento de código: betaSubmenu.DefaultItem = true;
D)
No método que trata o evento alfaSubmenu.Click, utilize o seguinte fragmento de código: alfaSubmenu.DefaultItem = false; No método que trata o evento betaSubmenu.Click, utilize o seguinte fragmento de código: betaSubmenu.DefaultItem = false;
E)
No método que trata o evento alfaSubmenu.Click, adicione o seguinte fragmento de código: alfaSubmenu.Checked = true; No método que trata o evento betaSubmenu.Click, adicione o seguinte fragmento de código: betaSubmenu.Checked = true;
F)
No método que trata o evento alfaSubmenu.Click, adicione o seguinte fragmento de código: betaSubmenu.Checked = false; No método que trata o evento betaSubmenu.Click, adicione o seguinte fragmento de código: alfaSubmenu. Checked = false;
G)
Defina a propriedade alfaSubmenu.RadioCheck como True Defina a propriedade betaSubmenu.RadioCheck como True
H)
Defina a propriedade alfaSubmenu.RadioCheck como False Defina a propriedade betaSubmenu.RadioCheck como False
70-316 - Questão 08
Thursday, June 29, 2006 11:30 AM
8) Você é o responsável pela manutenção de uma aplicação que foi
escrita por um colega que não está mais trabalhando na empresa. A
aplicação lê e escreve arquivos de log localizados na rede local. O
autor do código incluiu o seguinte código de depuração para facilitar a
manutenção do código:
try { Debug.WriteLine(“Executando dentro do bloco try”); throw(new IOException()); } catch (IOException e) { Debug.WriteLine(“Uma exceção do tipo IOException foi capturada”); } catch (Exception e) { Debug.WriteLine(“Uma exceção do tipo Exception foi capturada”); } finally { Debug.WriteLine(“Executa | | | | |