public static void Focus() { // Se o digitalizador não estiver habilitado então isso não é necessário if (Focused != null && Focused.Viewable) { return; } // Percorre toda a árvore de ordem para executar o comando Stack <List <Tools.Order_Structure> > Stack = new Stack <List <Tools.Order_Structure> >(); Stack.Push(Tools.Order); while (Stack.Count != 0) { List <Tools.Order_Structure> Top = Stack.Pop(); for (byte i = 0; i < Top.Count; i++) { if (Top[i].Data.Visible) { // Altera o digitalizador focado para o primeiro visível if (Top[i].Data is Structure && !Tools.Order[i].Data.Name.Equals("Chat")) { Focused = Top[i]; return; } Stack.Push(Top[i].Nodes); } } } Focused = null; }
public static void ChangeFocus() { List <Tools.Order_Structure> Parent; if (Focused.Parent != null) { Parent = Focused.Parent.Nodes; } else { Parent = Tools.Order; } int Index = Parent.IndexOf(Focused), Temp = Index + 1; // Altera o digitalizador focado para o próximo while (Temp != Index) { if (Temp == Parent.Count) { Temp = 0; } if (Parent[Temp].Viewable && Parent[Temp].Data is Structure) { Focused = Parent[Temp]; return; } Temp++; } }
private static void Tools(Tools.Order_Structure Parent, ref List <Tools.Order_Structure> Node, BinaryReader Data) { // Lê todos os filhos byte Size = Data.ReadByte(); for (byte i = 0; i < Size; i++) { // Lê a ferramenta Tools.Structure Temp_Tool = new Tools.Structure(); switch ((Tools.Types)Data.ReadByte()) { case global::Tools.Types.Button: Temp_Tool = Button(Data); Buttons.List.Add((Buttons.Structure)Temp_Tool); break; case global::Tools.Types.TextBox: Temp_Tool = TextBox(Data); TextBoxes.List.Add((TextBoxes.Structure)Temp_Tool); break; case global::Tools.Types.Panel: Temp_Tool = Panel(Data); Panels.List.Add((Panels.Structure)Temp_Tool); break; case global::Tools.Types.CheckBox: Temp_Tool = CheckBox(Data); CheckBoxes.List.Add((CheckBoxes.Structure)Temp_Tool); break; } // Adiciona à lista Tools.Order_Structure Temp_Order = new Tools.Order_Structure(); Temp_Order.Nodes = new List <Tools.Order_Structure>(); Temp_Order.Parent = Parent; Temp_Order.Data = Temp_Tool; Node.Add(Temp_Order); // Pula pro próximo Tools(Node[i], ref Node[i].Nodes, Data); } }
// Eventos public void MouseUp(Tools.Order_Structure Order) { // Somente se necessário if (!Tools.IsAbove(new Rectangle(Position, new Size(Width, Graphics.TSize(Graphics.Tex_TextBox).Height)))) { return; } // Define o foco no digitalizador Focused = Order; // Altera o foco do digitalizador if (((Structure)Order.Data).Name.Equals("Chat")) { Loop.Chat_Timer = Environment.TickCount + Chat.Sleep_Timer; Panels.Get("Chat").Visible = true; } }