怪怪怪!不信你试试!

wunglee 2001-01-01 08:39:00
试试这个原代码,同样的代码,用button和菜单发出命令居然实现不同,而且,程序都无法实现预期功能:如改变选中的字体样式等,为什么?请解释。
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
if(FontDialog1->Execute()==True)
{
RichEdit1->SelAttributes->Style=FontDialog1->Font->Style;
RichEdit1->SelAttributes->Size=FontDialog1->Font->Size;
RichEdit1->SelAttributes->Name=FontDialog1->Font->Name;
RichEdit1->SelAttributes->Color=FontDialog1->Font->Color;
}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::fontset1Click(TObject *Sender)
{
if(FontDialog1->Execute()==True)
{
RichEdit1->SelAttributes->Style=FontDialog1->Font->Style;
RichEdit1->SelAttributes->Size=FontDialog1->Font->Size;
RichEdit1->SelAttributes->Name=FontDialog1->Font->Name;
RichEdit1->SelAttributes->Color=FontDialog1->Font->Color;
}
}
//---------------------------------------------------------------------------
...全文
265 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
nicolas 2001-01-10
  • 打赏
  • 举报
回复
你用不着按钮与菜单写两个事件,其实在你的菜单的OnClick事件中选择BitBtn1Click事件就可以
了只是你先要写BitBtn1Click事件.
wunglee 2001-01-10
  • 打赏
  • 举报
回复
我也用其他方式解决了这个问题:
if(FontDialog1->Execute()==True)
RichEdit1->SelAttributes->Assign(FontDialog1->Font);
可是,我认为重要的不是在于寻求一个绕过问题的解决方案,而是知道原理,将来才可以借鉴于其他的方面,对吗?
哪位高手能说出个原由?一定加分!!!
wunglee 2001-01-09
  • 打赏
  • 举报
回复
程序早已发给你了,怎么啦?没有回音?
Darkblack 2001-01-09
  • 打赏
  • 举报
回复
Font->Style的设置是有这个问题,如果出现这种情况,用一个中间变量即可 if(FontDialog1-FontDialog1->Execute()==True)
{
TFontStyles style;
style = FontDialog1->Font->Style;
RichEdit1->SelAttributes->Style = style;
RichEdit1->SelAttributes->Name = FontDialog1->Font->Name;
}

babysloth 2001-01-09
  • 打赏
  • 举报
回复
信箱出问题了,抱歉,收不到信.发到sloth@myrice.com吧,谢谢.
Wingsun 2001-01-02
  • 打赏
  • 举报
回复
对,就是你的输入焦点跑了。你要改一下你的RichiEdit的属性设置了。
Winsky 2001-01-02
  • 打赏
  • 举报
回复
你的输入焦点跑了。
babysloth 2001-01-02
  • 打赏
  • 举报
回复
我不信,也试过了,没问题啊,能把把您的源程序发给我吗?
wunglee 2001-01-02
  • 打赏
  • 举报
回复
怎么改?具体点,另外,为什么字体样式设置不起作用?
附上头文件!

//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Buttons.hpp>
#include <ComCtrls.hpp>
#include <Dialogs.hpp>
#include <Menus.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TRichEdit *RichEdit1;
TBitBtn *BitBtn1;
TFontDialog *FontDialog1;
TMainMenu *MainMenu1;
TMenuItem *fontset1;
void __fastcall BitBtn1Click(TObject *Sender);
void __fastcall fontset1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif


去掉与问题无关的内容后源文件为:


//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
if(FontDialog1->Execute()==True)
{
RichEdit1->SelAttributes->Style=FontDialog1->Font->Style;
RichEdit1->SelAttributes->Name=FontDialog1->Font->Name;
}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::fontset1Click(TObject *Sender)
{
if(FontDialog1->Execute()==True)
{
RichEdit1->SelAttributes->Style=FontDialog1->Font->Style;
RichEdit1->SelAttributes->Name=FontDialog1->Font->Name;
}
}
//---------------------------------------------------------------------------
「已注销」 2001-01-01
  • 打赏
  • 举报
回复
简单的把代码改一下在试看看啊

void __fastcall TForm1::fontset1Click(TObject *Sender)
{
BitBtn1Click(this);
}

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧