Editores de Diálogos Guías de Estilo ❚ Cajas de Herramientas ❚ Software interactivo. ❚ Herramienta de ayuda al programador. ❚ Permite construir diálogos de forma visual e interactiva, normalmente a través de técnicas de manipulación directa. ❚ Entorno para construir entornos. ❚ Ejemplos: ❙ ❙ ❙ ❙ ❙ Borland Builder C++ (aquí descrito) Visual Basic Delphi Visual X Programming (Motif) ... Entornos de Usuario (F. Pla, Universitat Jaume I) 1 Guías de Estilo librerías de objetos diseñados para facilitar la programación de EU. ❚ Objetos diseñados con cierto estilo de entorno: ❙ tareas de interacción establecidas. ❙ estilos de entorno predeterminados (menús, manipulación directa, ...). ❙ con su propio look and feel ❙ aspecto y apariencia predefinido. ❙ comportamiento de los objetos predefinido. Entornos de Usuario (F. Pla, Universitat Jaume I) 2 Borland Builder C++ ❚ Características: ❚ Ventajas: ❙ ❙ ❙ ❙ ❙ facilita la tarea del programador/diseñador. ❙ rapidez en el diseño y desarrollo de entornos. Caja de Herramientas. Guía de Estilo. Editor de Diálogos. Basada en programación orientada a objetos, C++. ❚ Modelo: ❙ Ficha→Ventana→Componente ❙ Objetos → objetos C++. ❙ Componentes → Fichas+Objetos (reutilizables). ❙ Propiedades de los objetos: ❚ Inconvenientes: ❙ hay que seguir la funcionalidad (comportamiento) y aspecto predeterminado por la guía de estilo. ❘ Atributos de los objetos ❘ En general, variables propias del objeto. Entornos de Usuario (F. Pla, Universitat Jaume I) 3 Entornos de Usuario (F. Pla, Universitat Jaume I) 4 Borland Builder C++ Entorno BBC++ ❚ Modelo: ❙ Eventos: ❘ Cada objeto → eventos asociados ❘ Prácticamente, todo el código adicional que se edita va asociado a eventos. ❙ Métodos: ❘ Funciones para realizar una tarea asociada a un componente. ❘ Funciones propias de los objetos. ❙ Por extensión, todas las propiedades de la programación orientada a objetos: ❙ Barra de menús desplegables (común a aplicaciones Windows). ❙ Ayuda (F1): ❘ Herencia ❘ Encapsulación ❘ ... Entornos de Usuario (F. Pla, Universitat Jaume I) ❘ Sensible al contexto. ❘ Bastante completa. 5 Entorno BBC++ Entornos de Usuario (F. Pla, Universitat Jaume I) 6 Entorno BBC++ ❚ Ficha (Form): Ventana →Área de la pantalla ❙ Al crearse: propiedades con valores por defecto. ❙ Base sobre la que se construyen los diálogos ❚ Paleta de botones: ❙ Personalizable (menú emergentes). ❙ Acceso rápido a opciones de barra de menús. ❚ Ficha Principal: ❙ Todo proyecto tiene una. ❙ Se crea una ficha vacía al iniciar un nuevo proyecto. ❙ Se pueden crear otras fichas dentro del mismo proyecto. ❚ Paleta de componentes: ❙ Componentes VCL de BBC++. ❙ Personalizable (menú emergente). Entornos de Usuario (F. Pla, Universitat Jaume I) 7 Entornos de Usuario (F. Pla, Universitat Jaume I) 8 Entorno BBC++ Entorno BBC++ ❙ Análisis y edición de código: ❙ Inspector de objetos: ❘ editor del código fuente. ❘ El programa principal, en general, no se muestra ni edita: Facilitar la edición de propiedades y eventos. View →Project Source ❘ Archivos DFM: ❙ Edición de propiedades: valor de las propiedades de cada componente Sobre la ficha: ❘ valor editable, ❘ lista de opciones posible, ❘ valor booleano (TRUE, FALSE), ❘ propiedades con editores especiales (icones, bases de datos, etc.). Entornos de Usuario (F. Pla, Universitat Jaume I) menú emergente 9 Entorno BBC++ →View as text Entornos de Usuario (F. Pla, Universitat Jaume I) 10 Entorno BBC++ Project→Options ❚ Gestión de proyectos: ❙ Ficheros: ❘ .MAK .bpr ❘ por cada ficha: .DFM .h .cpp View→Project Manager Entornos de Usuario (F. Pla, Universitat Jaume I) 11 Entornos de Usuario (F. Pla, Universitat Jaume I) 12 Entorno BBC++ Entorno BBC++ Project→Options ❚ Ejecución Run → Run Parameters (parametros en línea) ❚ Depuración ❚ Compilación Run → Step Over F8 Trace Intro F7 Run to Cursor Programa Reset Ctrl-F2 Project→Compile Unit Make Build All Information (proyecto ya compilado) Entornos de Usuario (F. Pla, Universitat Jaume I) 13 Entorno BBC++ Entornos de Usuario (F. Pla, Universitat Jaume I) 14 Diseño de Fichas ❚ Depuración Propiedades Run → Add Watch Ctrl-F5 Evaluate/Modify F7 Add Breakpoint Name (Nombre del componente) Caption (Título de la Ficha) Left,Top (Posición) Width,Height (Dimensiones) Position (Modo posición al iniciar) con condición con contador poDesigned,poScreenCenter,poDefault Scaled (Proporciones Generales) True,False PixelsPerInch (Activado por Scaled) WindowState (Estado al iniciar) wsNormal,wsMinimize,wsMaximize View → Breakpoints lista de puntos de ruptura Entornos de Usuario (F. Pla, Universitat Jaume I) 15 Entornos de Usuario (F. Pla, Universitat Jaume I) 16 Diseño de Fichas Diseño de Fichas Propiedades Propiedades ClientWidth, ClientHeight (Área del Cliente) BorderIcons(Estilo controles borde) Propiedad compuesta por: biMinimize,biMaximize,biSystemMenu que toman valores True, False True,False Hint (Etiquetas de ayuda) Enabled (Estado de la Ficha) Visible (Estado de visibilidad de la Ficha) BorderStyle (Borde de la Ficha) bsSizable (permite redimensionarla) bsSingle (NO permite redimensionarla) bsNone (sin borde) Entornos de Usuario (F. Pla, Universitat Jaume I) Menu (Menú asociado a la Ficha) PopupMenu (Menú emergente asociado a la Ficha) ShowHint (Activa etiquetas de ayuda) True,False 17 Entornos de Usuario (F. Pla, Universitat Jaume I) Diseño de Fichas Diseño de Fichas Propiedades Propiedades FormStyle (Estilo de la Ficha) AutoScroll (Barra desplazamiento) fsNormal, fsStayOnTop fsMDIForm,fsMDIChild Icon (Icono de la Ficha al minimizar) ❙ Cargar mediante editor ❙ Cargar en ejecucion con método LoadFromFile del objeto Icon Cursor (Cursor del ratón de la Ficha) lista de posibles valores Font (Tipo de letra en la ficha) objeto de tipo Tfont: Color, Height, Size, Style Entornos de Usuario (F. Pla, Universitat Jaume I) 18 19 True,False HorzScrollBar, VertScrollBar HelpContext (Asociar Ficha a página de la ayuda) ❚ Propiedades de sólo ejecución ComponentCount ControlCount ❚ Superficie de trabajo Handle (identificador ventana Windows) Canvas (objeto representa interior de ventana) Entornos de Usuario (F. Pla, Universitat Jaume I) 20 Diseño de Fichas Diseño de Fichas Eventos Eventos Tobject Sender (parámetro común) OnClick ❚ Ratón OnMouseMove (ratón movimiento) X,Y Shift ssShift ssAlt ssLeft ssDouble barra espaciadora, Intro, Escape o pulsar botón izquierdo. OnDblClick ❚ Teclado OnKeyDown OnKeyPress (teclas normales) OnKeyUp ssCtrl ssRight ssMiddle OnMouseDown (tecla pulsada) OnMouseUp (tecla soltada) Key Código de tecla virtual Shift X,Y Shift Button mbRight,mbLeft,mbMiddle Entornos de Usuario (F. Pla, Universitat Jaume I) 21 Diseño de Fichas Entornos de Usuario (F. Pla, Universitat Jaume I) 22 Diseño de Fichas Eventos ❚ Arrastrar y Soltar OnDragOver (Arrastrar por encima) Source (Tobject arrastrado) X,Y State dsDragEnter,dsDragMove, dsDragLeave OnDragDrop (Se suelta el objeto arrastrado) Source (Tobject arrastrado) X,Y ❚ Otros Eventos OnShow, OnHide, OnResize, etc. Entornos de Usuario (F. Pla, Universitat Jaume I) 23 Métodos ❚ Mostrar y Ocultar Show (mostrar una ficha no visible) BringToFront (mostrarla encima de las demás) SendToBack (mostrarla detrás de las demás) ❚ Imagen de la Ficha Print (imprime imagen Ficha) GetFormImage (devuelve un Tbitmap) Entornos de Usuario (F. Pla, Universitat Jaume I) 24 Control Label Control Edit Propiedades Propiedades AutoSize (tamaño de la letra se ajusta al tamaño del control) True,False Align (alineación del control respecto a la ficha contenedora) Alignment (alineación del texto dentro del control) Font (Objeto Tfont para fuento de los caracteres) Pitch (Anchura de los caracteres) fpDefault,fpVariable,fpFixed ecNormal,ecLowerCase,ecUpperCase) ReadOnly (mostrar información solo lectura) True,False PasswordChar (Carácter en modo palabra secreta) Si no hay especificado ninguno, el texto que aparece es el normal. Color (Color de fondo) Transparent (True,False) Entornos de Usuario (F. Pla, Universitat Jaume I) Text (Texto del control) MaxLength (num. máximo de carácteres) CharCase (Conversión de la entrada) 25 Entornos de Usuario (F. Pla, Universitat Jaume I) Control Edit Control Edit Propiedades Eventos SelStart SelEnd (principio y final de texto seleccionado) SelText (texto seleccionado) OnEnter (cuando el control se activa) OnExit (cuando se desactiva) OnChange (cuando se produce un cambio en el contenido del control) Métodos SelectAll (seleccionar todo el texto) ClearSelection (borrar selección) Clear (borrar texto del control) CopyToClipboard CutToClipboard PasteToClipboard Entornos de Usuario (F. Pla, Universitat Jaume I) 26 27 Ejemplo: void __fastcall TForm1::CambioTexto(TObject *Sender) { TEdit *edit; AnsiString texto; edit=(TEdit*)Sender; texto=edit->Text; ShowMessage(texto); } Entornos de Usuario (F. Pla, Universitat Jaume I) 28 Control Memo Otros controles Entrada de texto multilínea Propiedades Lines (array de líneas. Objeto del tipo Tstrings) WordWrap (activa pasar a línea siguiente si no cabe texto en una True,False línea) Métodos Add (añadir línea al final) Insert (insertar línea) Move (cambiar de índice la línea) Exchange (intercambiar líneas) SaveToFile,LoadFromFile (guardar / cargar archivo texto en Lines) Entornos de Usuario (F. Pla, Universitat Jaume I) 29 Otros controles Entornos de Usuario (F. Pla, Universitat Jaume I) 30 Otros controles ❚ Selección de valores discretos y rangos (TTrackBar) Min,Max (rango de la medida) Position (valor actual) Orientation tbHorizontal, tbVertical TickMarks (Posición de las marcas de división) ❚ Estado de un proceso (TProgressBar) Mismas características Ttrackbar. StepIt permite incrementar en Step el estado de la barra. tmBottomRight, tmTopLeft, tmBoth SelStart,SelEnd (Asignan un rango dentro de Min,Max y se muestra en el control. No hay mecanismo automático para seleccionar estos valores) Entornos de Usuario (F. Pla, Universitat Jaume I) ❚ Botones (Button) Evento OnClick: Default a True Tecla Escape: Cancel a True ❚ Cajas de Selección multiple (CheckBox) Propiedad Checked (Boolean) ❚ Botones de Radio: selección excluyente (RadioButton) ❚ Agrupaciónde botones (GroupBox) Parent de controles en su interior. 31 ❚ Incremento/Decremento de valor (TUpDown) Min,Max,Position,Increment Wrap (modo circular) Associate (Control TEdit asociado) Entornos de Usuario (F. Pla, Universitat Jaume I) 32 Múltiples páginas Proyectos Multificha Páginas TPageControl ❚ Cada página de un TPageControl es un TTabSheet ❚ ActivePage (página activa) ❚ Pages (array de PageCount TTabSheets) ❚ Insertar una página: Opción New Page del menú emergente sobre el TPageControl ❚ TabVisible a false permite ocultar la página ❚ Controles comunes a las páginas: Insertar fuera del TpageControl y cambiar su posición. Entornos de Usuario (F. Pla, Universitat Jaume I) 33 Proyectos Multificha AnsiString InputString; InputString=InputBox( "Dame Nombre","Nombre","Remigio"); Entornos de Usuario (F. Pla, Universitat Jaume I) 34 Proyectos Multificha MessageDlg(AnsiString,TMsgDlgType, TMsgDlgButtons,HelpCtx) void __fastcall TForm1:: Flauta2Click(TObject *Sender) { if(MessageDlg("Esta seguro que desea continuar?",mtConfirmation, TMsgDlgButtons() << mbYes << mbNo, 0) == mrYes) ShowMessage("Dijo que SI"); } Entornos de Usuario (F. Pla, Universitat Jaume I) ❚ Mostrar mensajes y captura de datos simples ShowMessage(AnsiString) InputBox (AnsiString, AnsiString, AnsiString) 35 ❚ Crear una Ficha Diseño: Menú New -> Form Ejecución: Unit1, Unit2 (Fichas) Desde Unit1 crear una Unit2: ❘ ❘ ❘ ❘ Incluir Unit2.h en Unit1.cpp Crear instancia con new Mostrar con Show, ShowModal Destruir con delete { TForm2 Form2; Form2=new TForm2(this); switch(Form2->ShowModal()) /*ModalResult*/ { case mrOk: Flautin1->Checked=true; break; case mrNo: Flautin1->Checked=false; break; } delete Form2; } Entornos de Usuario (F. Pla, Universitat Jaume I) 36 Proyectos Multificha Menús ❚ MainMenu: Menú de Ficha Items (TMenuItem) Edición del menú: Cuadro de diálogo ❚ Cargar y Salvar archivos FileName: archivo seleccionado Filter: Ej. Archivos texto | *.TXT InitialDir: directorio inicial TOpenDialog *dialogo = new TOpenDialog(this); if(dialogo->Execute()==true) ShowMessage("Fichero seleccionado: ” +dialogo->FileName); Entornos de Usuario (F. Pla, Universitat Jaume I) 37 ShortCut (Tecla de acceso rápido) Submenús (menú emergente en edición) Break (Menús multicolumna) Entornos de Usuario (F. Pla, Universitat Jaume I) Menús 38 Gráficos ❚ PopupMenu: Menú emergente Activación en un componente: botón derecho del ratón. Asignación menú a componente: Propiedad PopupMenu Opciones (TMenuItem) Enabled (true,false) Visible (true,false) Checked (true,false) RadioItems (true,false) GroupIndex (grupo opciones) Código opciones: Evento OnClick ❚ Image (TImage) Picture (Tpicture -TBitmap,TMetaFile,TIcon-) Entornos de Usuario (F. Pla, Universitat Jaume I) Entornos de Usuario (F. Pla, Universitat Jaume I) 39 Métodos: LoadFromFile SaveToFile Canvas Propiedades: Pixels (Matriz de acceso a cada pixel) Pen, Brush, Font, etc. Métodos: LineTo,Polygon,Arc,etc. TextOut (dibujar texto) Draw, CopyRect (Copiar Bitmap,Icon o Metafile previamente cargado) 40 API de Windows Bases de Datos ❚ Flexibilidad contra Facilidad ❚ Funciones no accesibles desde objetos BBC++. Aplicación IDAPI (Integrated Database Application Program Interface) Ej. Funciones para comunicarnos con puerto serie. ❚ Mezcla de Sistema de Gestión de Ventanas, Paquete Gráfico y SO. ❚ Funciones en diferentes DLLs (Dynamic Link Library). Ejemplo: BDE (Borland DataBase Engine) Controlador dBase WINMM.DLL funciones multimedia WING.DLL funciones de gráficos WINDOWS.HPP fichero cabecera Controlador ASCII Controlador Pardox ❚ Funciones Callback. Funciones que editaremos para engancharlas a eventos Windows a través de un Hook. Controlador API ODBC (Open Database Connectivity) Controlador Base de Datos Entornos de Usuario (F. Pla, Universitat Jaume I) 41 Entornos de Usuario (F. Pla, Universitat Jaume I) 42