Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   "Acerca de" en el Menu SystemControl del Formulario (https://www.clubdelphi.com/foros/showthread.php?t=8176)

dmassive 11-03-2004 05:41:50

"Acerca de" en el Menu SystemControl (SystemMenu) del Formulario
 
Como introduciria el clasico "Acerca de" en el menu SystemControl (SystemMenu)(Es el menu que tiene toda ventana (formulario) arriba a la izquierda que contiene, restaurar, mover, tamaño, minimizar, maximizar y cerrar). Gracias.

roman 11-03-2004 05:54:36

Dicho un poco de memoria necesitas usar la función GetSystemMenu para obtener el identificador del menú de sistema, InsertMenuItem para insertar el item deseado e implementar un manejador para el mensaje WM_COMMAND de manera que puedas detectar cuándo se selecciona el nuevo ítem y desplegar entonces tu cuadro de diálogo.

// Saludos

dmassive 11-03-2004 13:58:00

Gracias!! Aqui dejo el codigo fuente por si alguien mas lo necesita:

Código:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
begin
  inherited;
  if Message.CmdType = $F200 then form2.ShowModal
end;

procedure TForm1.FormCreate(Sender: TObject);
var s: string;
begin
  AppendMenu (GetSystemMenu (Handle, FALSE), MF_SEPARATOR, 0, '');
  s := '&Acerca De...';
  AppendMenu(GetSystemMenu(Handle, False), MF_STRING, $F200, PChar(s));
end;
end.

:cool:

roman 12-03-2004 16:47:15

Cita:

Empezado por dmassive
Gracias!!

Gracias a tí. Es muy grato ver que pudiste solucionar el problema y lo compartiste con todos los demás.

// Saludos

movorack 13-03-2007 18:19:11

está muy bien... esta chido... y agregue al menú los items que quiero...

pero no me está manejando el evento cuando hago un click sobre los items... conste que lo hice al pie de la letra.

Código Delphi [-]
procedure TFrmLogon.WMSysCommand(var Message: TWMSysCommand);
begin
  inherited;
  if Message.CmdType = $F200 then
    MessageDlg('Acreca de...', mtInformation, [mbOK], 0);
end;

What's wrong???? :p

movorack 13-03-2007 18:36:19

bueno encontre la solución a mi problem... :D

agregue a mi formulario un TApplicationEvents y en el manejador OnMessage he agregado las porciones de código de las que nos hablaba nuestro amigo dmassive:

Código Delphi [-]
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
begin
  if (Msg.message = WM_SYSCOMMAND) then
    case Msg.wParam of
      $F200: MessageDlg('Acerca de...', mtInformation, [mbOK], 0);
    end;
end;

ahora si... a bailar en serio. ;)


La franja horaria es GMT +2. Ahora son las 23:20:56.

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