Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   cambiar color a messageBox (https://www.clubdelphi.com/foros/showthread.php?t=29790)

reina 01-02-2006 17:36:37

cambiar color a messageBox
 
Bueno a ver si me ayudan..necesito poner el color de las pantallas de mi aplicación a las cajas de mensajes..quisiera saber si hay algun modo de indicarle el color..parece una tontera pero ..es lo que piden
saludos y tkss!

LA PATRIA SERA LIBRE

jmariano 01-02-2006 20:21:02

A las cajas de mensajes generadas por las funciones del API de Windows, como MessageBox, que yo sepa, es imposible cambiarles el color (toman el color y apariencia según esté configurado en el sistema por el usuario). Lo que si podrías hacer es crearte tus propias cajas de mensajes (derivando de la clase TForm ) y especificarles el color a través de la propiedad Color.

Saludos!

reina 01-02-2006 20:33:59

si! tks..ahi lei recien que agarra esa funcion de la api..imposible cambiarle el color..pero bueno nunca se sabe..je. tks por tu recomendacion..voy a mandar el circuito de alarmas a un form creado por mi..en fin
saludoss

LA PATRIA SERA LIBRE

Héctor Randolph 02-02-2006 00:18:01

Bueno, tal vez en MessageBox no sea posible, pero antes de crear una nueva función para mostrar los mensajes yo consideraría el truco que nos dió Román en este hilo.

http://www.clubdelphi.com/foros/showthread.php?t=29265

Como dice jmariano, puedes implementar una función que cambie el color de las cajas derivando de TForm, para esto podría ser util la función CreateMessageDialog.

Saludos

RicardoNavarro 05-02-2008 16:15:37

Color MessageBox
 
Espero sirva

Código Delphi [-]
function MiMensaje(XTexto, XTitulo: String): Boolean;
var
  LForm: TForm;
  CaptionIndex, i: integer;
  LNombres: array of string;
  LFondo, LColor: TColor;
  LICono: TMsgDlgType;
  LBotones: TMsgDlgButtons;
begin
  LFondo := clGreen;
  LColor := clWhite;
  LIcono := mtInformation;
  LBotones := [mbOK];
  SetLength(LNombres, 1);
  LNombres[0] := '&Cerrar';
  if XTitulo = 'Cuidado' then
    begin
      LFondo := clYellow;
      LColor := clBlack;
      LIcono := mtConfirmation;
      LBotones := [mbYes,mbNo];
      SetLength(LNombres, 1);
      LNombres[0] := '&Si';
    end
  else if XTitulo = 'Peligro' then
    begin
      LFondo := clRed;
      LColor := clYellow;
      LIcono := mtWarning;
      LBotones := [mbYes,mbNo,mbAbort];
      SetLength(LNombres, 3);
      LNombres[0] := '&Si';
      LNombres[1] := '&No';
      LNombres[2] := '&Cerrar';
    end;
  LForm := CreateMessageDialog(XTexto, LIcono, LBotones);
  LForm.Caption := XTitulo;
  LForm.Color := LFondo;
  LForm.BorderIcons := [];
  CaptionIndex := 0;
  for i := 0 to LForm.ComponentCount - 1 do
    begin
      if (LForm.Components[i] is TLabel) then
        begin
          TLabel(LForm.Components[i]).Font.Style := [fsBold];
          TLabel(LForm.Components[i]).Font.Color := LColor;
          TLabel(LForm.Components[i]).Font.Size := 12;
        end;
      if (LForm.Components[i] is TButton) then
        begin
          if CaptionIndex > High(LNombres) then
            Break;
          TButton(LForm.Components[i]).Caption := LNombres[CaptionIndex];
          Inc(CaptionIndex);
        end;
    end;
  with LForm do
    begin
      try
        ShowModal;
      finally
        Free;
      end;
    end;
  if LForm.ModalResult = mrYes then
    Result := True
  else
    Result := False;
end;


La franja horaria es GMT +2. Ahora son las 23:49:15.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi