标签: c++builder

如何在TEdit中禁用复制/粘贴

我想防止复制,剪切和粘贴我的TEdit.我怎样才能做到这一点?

我在控件上按下时尝试设置Key=NULLon KeyDown事件CTRL+V,但是没有用.

clipboard vcl c++builder

3
推荐指数
2
解决办法
4406
查看次数

为什么C++ Builder找不到我的标题?

我需要重新编译一个C++构建器项目,并遇到了这个问题.

其中一个单位包含以下内容:

#include    "LMDBaseControl.hpp"
#include    "LMDBaseGraphicControl.hpp"
#include    "LMDBaseLabel.hpp"
#include    "LMDBaseMeter.hpp"
#include    "LMDControl.hpp"
Run Code Online (Sandbox Code Playgroud)

:

当我编译这个单元时,我收到以下错误消息:

MHSS_ISS_HMI_v3_2.cpp(41):#include ....\include\MHSS\iss_hmi_gui_cached.h [C++错误] iss_hmi_gui_cached.h(68):E2209无法打开包含文件'LMDBaseControl.hpp'

完整的解析器上下文

MHSS_ISS_HMI_v3_2.cpp(41):#include ....\include\MHSS\iss_hmi_gui_cached.h [C++错误] iss_hmi_gui_cached.h(69):E2209无法打开包含文件'LMDBaseGraphicControl.hpp'

完整的解析器上下文

MHSS_ISS_HMI_v3_2.cpp(41):#include ....\include\MHSS\iss_hmi_gui_cached.h [C++错误] iss_hmi_gui_cached.h(70):E2209无法打开包含文件'LMDBaseLabel.hpp'

完整的解析器上下文

MHSS_ISS_HMI_v3_2.cpp(41):#include ....\include\MHSS\iss_hmi_gui_cached.h [C++错误] iss_hmi_gui_cached.h(71):E2209无法打开包含文件'LMDBaseMeter.hpp'

MHSS_ISS_HMI_v3_2.cpp(41):#include ....\include\MHSS\iss_hmi_gui_cached.h [C++错误] iss_hmi_gui_cached.h(72):E2209无法打开包含文件'LMDControl.hpp':

我在Borland C++ builder 6上安装了LMD Tools 7.0,并将库设置为我安装LMD Tool的文件夹.

c++ compilation c++builder

3
推荐指数
1
解决办法
7458
查看次数

用于识别C++ Builder个性的条件指令

我有一个Delphi组件,我想安装它,并在Delphi的组件面板中提供,但在C++ Builder中没有.在BDS/RAD 2006及以上版本中,我既可以为两个人安装,也可以不安装.

我需要这样做,因为该组件使用不支持C++ Builder的第三方库.

我看过这里提到的jedi.inc ,但是我无法找到能够仅在Delphi个性中注册该组件的组合.该组件也适用于较旧的Delphi版本:D5,D6和D7; 但不适用于BCB5和BCB6.这可能吗?

BTW:组件是用Delphi编写的.C++ Builder与Delphi共享相同的包.

提前致谢.

delphi vcl packages c++builder

3
推荐指数
1
解决办法
801
查看次数

在涉及.PAS单元时减少C++ Builder构建时间

我有一个C++ Builder项目,它还涉及一些Delphi Pascal文件.我注意到修改PAS文件的实现部分导致重新构建的文件比需要的多得多.

即使接口未更改,只要修改.pas文件,就会创建一个新的.hpp文件.反过来,这会导致许多.cpp文件需要重新编译.

是否有可以避免这种情况的解决方法或技巧?

delphi c++builder

3
推荐指数
1
解决办法
145
查看次数

VCL或MFC可以在我的应用程序中免费使用吗?

这里的"免费"意味着无需购买任何许可证.

据我所知,VCL来自Borland C++ Builder,它是一个商业IDE.MFC属于Microsoft Visual Studio.

如果我没有购买BCB或MSVS的任何许可证,我可以编译这两个库的头文件并将它们链接到我自己的应用程序(免费应用程序,没有商业用途)?

我问这个是因为BCB和MSVS都有免费版本.BCB编译器是免费的,MSVS Express是免费的.

我还发现一篇文章告诉人们如何在MSVS Express中编译MFC:http: //www.codeproject.com/Articles/30439/How-to-compile-MFC-code-in-Visual-C-Express

它使用了DDK的旧版MFC.

== ==综述

  1. 如果我没有购买BCB或MSVS的任何许可证,我可以通过编译和链接在我自己的非商业应用程序中使用MFC或VCL吗?

  2. 如果第一个问题的答案是肯定的,就像文章说我们可以在DDK中找到MFC4.2,我可以在免费的SDK中找到VCL标题和lib/dll吗?

==更多解释(已编辑)==

这个问题不仅仅是关于重新分配问题,因为起初我想为自己编译一些代码.之后我可能想要发布二进制文件.为了使我的问题更直接:

因为我必须使用MFC/VCL header&lib来编译我的项目,我可以合法地获得这些文件而无需支付任何许可费吗?

在我上面提到的文章中,可以在DDK找到MFC4.2.我认为这可能是一种合法的方式.也许我可以在Platform SDK中获得更高级别的MFC头和lib.但是我在哪里可以得到VCL header/lib我完全不知道,如果我确实找到了一些来源,我不知道这是否合法.

(再次编辑)

根据paulsm4的回答,Wine说:

"首先,你必须合法地在你的计算机上获得MFC源代码.MFC源代码是Visual Studio的一部分.Visual Studio的许可证意味着它是一个单一的产品,不能分解成它的组件.所以最干净的方式在您的系统上获得MFC就是购买Visual Studio并将其安装在双启动Linux机器上." (http://www.sdconsult.no/linux/wine-doc/mfc-legal-issues.html)

VCL是同样的情况吗?

(最终编辑)

从David M的回答来看,VCL也是如此

但是你可以使用包含VCL lib/header的"Turbo C++ Builder 2006 Explorer",它是免费的.可悲的是,官方网站将不再提供此免费版本.

c++ mfc licensing vcl c++builder

3
推荐指数
1
解决办法
2937
查看次数

在C++ Builder XE2中使用TDictionary

目前我想TDitionary在C++ Buillder XE2中使用

在我阅读文档后,我认为应该很容易,但我甚至无法创建TDictionary对象......

我的代码:

#include <vcl.h>
#pragma hdrstop
#include <Generics.collections.hpp>
#include "TDictionaryTest.h"

#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;

void __fastcall TForm2::FormCreate(TObject *Sender)
{
    TDictionary__2 <String, String> *Dir = new  TDictionary__2<String, String>(0);
    delete Dir;
}
Run Code Online (Sandbox Code Playgroud)

错误消息:

[ILINK32 Error] Error: Unresolved external '__fastcall           System::Generics::Collections::TDictionary__2<System::UnicodeString,   System::UnicodeString>::~TDictionary__2<System::UnicodeString, System::UnicodeString>()'  referenced from ...\PRACTICE\C++\WIN32\DEBUG\TDICTIONARYTEST.OBJ
[ILINK32 Error] Error: Unresolved external '__fastcall System::Generics::Collections::TEnumerable__1<System::Generics::Collections::TPair__2<System::UnicodeString, System::UnicodeString> >::~TEnumerable__1<System::Generics::Collections::TPair__2<System::UnicodeString, System::UnicodeString> >()' referenced from ...\PRACTICE\C++\WIN32\DEBUG\TDICTIONARYTEST.OBJ
[ILINK32 Error] Error: Unresolved external 'System::Generics::Collections::TDictionary__2<System::UnicodeString, System::UnicodeString>::' referenced from ...\PRACTICE\C++\WIN32\DEBUG\TDICTIONARYTEST.OBJ
[ILINK32 …
Run Code Online (Sandbox Code Playgroud)

c++ dictionary c++builder c++builder-xe2

3
推荐指数
1
解决办法
2793
查看次数

何时在OnNewText事件后重绘VirtualTreeView?

我使用此代码来填充VirtualStringTree并允许重命名项目:

//---------------------------------------------------------------------------
// Structure for the tree
//---------------------------------------------------------------------------
struct TVSTdata
{
UnicodeString Name;
};
//---------------------------------------------------------------------------
// Initialization of the tree
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
VirtualStringTree1->NodeDataSize = sizeof(TVSTdata);
// Fill all nodes with initial data
InitializeTree();
}
//---------------------------------------------------------------------------
// Fill all nodes with data and assign FocusedNode
//---------------------------------------------------------------------------
void TForm1::InitializeTree()
{
TVirtualNode* pNode;
TVirtualNode* pActiveNode;
TVSTdata*     pData;

VirtualStringTree1->BeginUpdate();
VirtualStringTree1->Clear();

pNode = VirtualStringTree1->AddChild(NULL); pData = static_cast<TVSTdata*>(VirtualStringTree1->GetNodeData(pNode)); pData->Name = "This is name 1";
pNode = VirtualStringTree1->AddChild(NULL); pData = static_cast<TVSTdata*>(VirtualStringTree1->GetNodeData(pNode)); pData->Name …
Run Code Online (Sandbox Code Playgroud)

delphi c++builder virtualtreeview tvirtualstringtree

3
推荐指数
1
解决办法
1444
查看次数

如何在RAd Studio中解析JSON数组?

我试图解析以下Json文档:

[
  {"EventType":49,"Code":"234","EventDate":"20050202", "Result":1},
  {"EventType":48,"Code":"0120","EventDate":"20130201", "Group":"g1"}
]
Run Code Online (Sandbox Code Playgroud)

我使用以下代码:

TJSONObject* jsonread0 = (TJSONObject*) TJSONObject::ParseJSONValue(TEncoding::ASCII->GetBytes(Memo1->Lines->Text), 0);

for(int i=0;i<jsonread0->Size();i++)
{
    TJSONPair* pair = jsonread0->Get(i);
Run Code Online (Sandbox Code Playgroud)

此时,pair.JsonValue为NULL.我需要做什么来阅读这些值?

delphi json c++builder

3
推荐指数
1
解决办法
4万
查看次数

神秘链接器警告:两个模块中定义的公共符号

我有2个字符串数组,在头文件中定义如下:

#ifndef DRC_DefinesH
#define DRC_DefinesH
#include <string>
#include <System.hpp>
//---------------------------------------------------------------------------

std::string MagFields[] = {
   "SCAN", "EVENT", "EVENT2", "EVENT1", "EVENT3", "VECTORX", "VECTORY", "VECTORZ", "MAG1RAW", "MAG2RAW", "MAG3RAW",
   "MAG4RAW", "MAG1UNCOMP", "MAG2UNCOMP", "MAG3UNCOMP", "MAG4UNCOMP", "MAG1COMP", "MAG2COMP", "MAG3COMP", "MAG4COMP",
   "GRAD1", "GRAD2", "GRAD3", "UTC", "LAT", "LON", "ALT", "ANALOG1", "ANALOG2", "ANALOG3", "ANALOG4", "SYSTIME"};

std::string AnalogFields[] = {
   "SCAN", "EVENT0", "EVENT1", "EVENT2", "EVENT3", "ANALOG1", "ANALOG2", "ANALOG3", "ANALOG4", "ANALOG5", "ANALOG6",
   "ANALOG7", "ANALOG8", "ANALOG9", "ANALOG10", "ANALOG11", "ANALOG12", "ANALOG13", "ANALOG14", "ANALOG15", "ANALOG16",
   "ANALOG17", "ANALOG18", "ANALOG19", "ANALOG20", "ANALOG21", "ANALOG22", "ANALOG23", "ANALOG24", "ANALOG25", …
Run Code Online (Sandbox Code Playgroud)

c++ c++builder

3
推荐指数
1
解决办法
2456
查看次数

在Delphi中初始程序加载后更改一个TStatusPanel的颜色?

我有一个程序,底部有一个包含三个元素的状态栏.我想用不同的字体颜色重绘第二个元素,以表示用户有效.我的问题的第一部分是:

a)如何以不同的颜色将文本重绘为默认文本?

和b)如何在触发事件后以不同的颜色绘制文本(例如按下按钮)?

我目前的代码如下.我正在尝试检查以不同颜色重新绘制面板的条件是否正确(CurrentUser.Valid,这是一个布尔值),然后尝试重新着色文本.这目前不起作用.

procedure TChatFormMain.sbarMainDrawPanel(StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
var
  RectForText: TRect;
begin
  if (Panel = StatusBar.Panels[1]) and (CurrentUser.Valid) then
  begin
    sbarMain.Canvas.Font.Color := clGreen;
    RectForText := Rect;
    StatusBar.Canvas.FillRect(RectForText);
    DrawText(sbarMain.Canvas.Handle, PChar(Panel.Text), -1, RectForText,
      DT_SINGLELINE or DT_VCENTER or DT_LEFT);
  end;
end;
Run Code Online (Sandbox Code Playgroud)

在代码的另一部分我打电话StatusBar.repaint;试图用新的文本颜色重绘条,这是正确的吗?

更新MCVE:

unit colourStatusU;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls;

type
  TForm1 = class(TForm)
    StatusBar1: TStatusBar;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel;
      const Rect: TRect); …
Run Code Online (Sandbox Code Playgroud)

delphi colors c++builder statusbar ondraw

3
推荐指数
1
解决办法
4815
查看次数