小编mjn*_*mjn的帖子

Wicket页面链接不使用挂载的URL编码策略?

在Wicket Application类中,我在location/about处安装了一个页面

mountBookmarkablePage("about", AboutPage.class);
Run Code Online (Sandbox Code Playgroud)

我验证了about页面是否可用于/ about.然后在需要链接到about页面的页面中,我使用Wicket Link类:

add(new Link("link") {

            @Override
            public void onClick() {
                setResponsePage(AboutPage.class);
            }

        };
)
Run Code Online (Sandbox Code Playgroud)

链接按预期工作,但当鼠标悬停在链接上时,目标URL显示在浏览器状态栏中

http://localhost:8080/?wicket:interface=:0:linkpage:repeating:1:link::ILinkListener::
Run Code Online (Sandbox Code Playgroud)

我找到的解决方法是使用ExternalLink

new ExternalLink("link", "/about", "about");
Run Code Online (Sandbox Code Playgroud)

这会将目标URL更改为

http://localhost:8080/about
Run Code Online (Sandbox Code Playgroud)

当鼠标悬停在链接上时,它显示在浏览器状态栏中.

有没有办法使用挂载的URL作为Wicket Link类的目标链接,或者有没有办法获取类的挂载位置,以便我可以使用它来构建AboutPage.class的链接URL(而不是在ExternalLink构造函数中对其进行硬编码)?

url wicket hyperlink

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

是否已弃用Delphi TClientSocket?

在错误报告12266解决方案评论中("套接字连接错误导致资源泄漏"),Robert Ehteshamzadeh写道

不推荐使用TClientSocket.此报告处于打开状态,以便提供建议的解决方法.

这是德尔福6.在以后的版本,Tclientsocket构件实现和TServerSocket尚未安装在默认情况下,工具选项板,但被安装指令提供.

从那以后这个状态是否发生了变化,以便TClientSocket(和TServerSocket)现在再次成为Delphi VCL中的一流成员?我想在一些项目中使用TClientSocket(作为Indy和Synapse之后的另一个TCP/IP库),并且无法在Embarcadero DocWiki中找到官方状态信息.

('弃用'类/方法的官方索引将是有用的).

delphi deprecated tclientsocket

1
推荐指数
2
解决办法
3686
查看次数

如何在Delphi 7中使用JNI

我需要将一个java应用程序加载到delphi项目.jre,j3d和jdk存在于delphi应用程序文件夹中名为java_files的文件夹中.Java类也存在于同一文件夹中.我需要将这个类加载到delphi应用程序中.我怎么能这样做

java delphi java-native-interface delphi-7

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

一次只检查一个CheckBox

[编译:Delphi XE2]

昨天我花了一整天的时间尝试各种方法来完成这个特定的任务,但他们都以相同的结果结束了.

使用TRZCheckGroup和此示例查看已检查的内容等.

procedure TFrmMain.cbOptionsChange(Sender: TObject; Index: Integer; NewState: TCheckBoxState);
var
  ItmIndex0, ItmIndex1: Integer;
begin
  { Initialize ItemIndex's }
  ItmIndex0 := -1;
  ItmIndex1 := -1;

  { Return the position Index of the string's(0 and 1) }
  ItmIndex0 := cbOptions.Items.IndexOf('One');
  ItmIndex1 := cbOptions.Items.IndexOf('Two');

  { Which CheckBox has been Checked } 
  cbOptions.ItemChecked[ItmIndex0] := True;
  cbOptions.ItemChecked[ItmIndex1] := False;
end;
Run Code Online (Sandbox Code Playgroud)

注意:^这不是我的最终代码只是我如何处理CheckBoxes的一个例子.

像 -

if cbOptions.ItemChecked[ItmIndex0] then
  cbOptions.ItemChecked[ItmIndex1] := False
else cbOptions.ItemChecked[ItmIndex1] := True;
Run Code Online (Sandbox Code Playgroud)

他们第一次工作然后它总是评估为真,我理解为什么.当我取消检查第一个CheckBox时,else位才会生效,这显然不是我想要的结果.

似乎事件停止工作,并且由于某种原因,我的一些尝试已经解雇了两次.

关于cbListOptionsChange的NewState Param,这是什么,它能帮助我吗?

任何有关这方面的帮助将非常感激.

谢谢.

if cbOptions.ItemChecked[ItmIndex0] then
  cbOptions.ItemChecked[ItmIndex1] …
Run Code Online (Sandbox Code Playgroud)

delphi vcl delphi-xe2

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

程序对象如何改变_self?

我有

Type
  TProcOfObject = Procedure of Object;

var 
  MyProc: TProcOfObject;
Run Code Online (Sandbox Code Playgroud)

现在如果我这样做

MyProc := MyObject.MyProc
Run Code Online (Sandbox Code Playgroud)

那么当我调用 MyProc self 将等于 MyObject (我还没有完全理解 self 存储在 MyProc 中的位置)。他们是否可以使用除 MyObject for Self 以外的其他值来调用 myProc ?

delphi self

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

为什么Delphi的"搜索用法"对话框中会出现"T"图标?

Delphi 2009在"搜索用法"对话框中显示一个带有"T"的小图标,而不是普通的IDE应用程序图标(见下图).这个符号是什么意思?

替代文字http://www.mikejustin.com/images/littlet.png

delphi icons refactoring delphi-2009

0
推荐指数
1
解决办法
174
查看次数

如何以非模态形式禁用所有组件?

场景:

  • TActionManager,TAction和TButton(与此操作相关联)
  • ActionManager在其OnUpdate事件处理程序中不断启用Action
  • 动作事件处理程序中的代码使用ShellExecAndWait方法启动外部程序(使用Jedi代码库JCL)
  • 要求:应用程序不应允许再次快速单击按钮启动应用程序两次

问题:

  • ShellExecAndWait不会阻止应用程序消息循环,因此用户可以在外部应用程序仍处于打开状态时单击
  • 如果他的Action处理程序方法在ShellExecAndWait调用之前禁用Action,Update方法将立即重新启用它

所以我可以这样写

procedure TMyForm.OnMyAction(Sender: TObject);
begin
  try  
    // notify Action Manager that the Action is temporarily disabled
    SomeGlobalFlag := True;

    // disable the action 
    (Sender as TAction).Enabled := False;

    // do the call
    ShellExecAndWait( ... );

  finally

    // enable the action 
    (Sender as TAction).Enabled := True;

    // allow ActionManager to control the action again
    SomeGlobalFlag := False; 

  end;
end;
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法?正如这个问题的标题所说 - 我可以阻止执行外部应用程序的输入吗?

delphi vcl modal-dialog tactionmanager

0
推荐指数
1
解决办法
5912
查看次数

Indy TIdTCPClient接收文本

我尝试在idtcpclient中接收文本,但它不起作用.这是我在计时器中使用的代码:

procedure TForm1.Timer2Timer(Sender: TObject);
var
  receivedtext:string;
begin
  if idtcpclient1.Connected = true then
  begin
    with idtcpclient1 do
    begin
      if not IOHandler.InputBufferIsEmpty then
      begin
        try
          receivedtext := IOHandler.ReadLn;
        finally
          if receivedtext = '' = false then
          begin
            showmessage(receivedtext);
            idtcpclient1.IOHandler.InputBuffer.Clear;
            receivedtext := '';
          end;
        end;
      end;
    end;
  end
  else
  begin
    timer2.Enabled := false;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

定时器的间隔为8 ms.计时器在连接时自动启用.但是当我发送内容时,我没有收到消息框或错误.我确信我写的数据是因为当我使用时,tclientsocket我会收到它.

我做错了什么?

delphi timer indy tcpclient

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

从Internet生成xml到delphi应用程序

我在Delphi XE6中工作,需要下载php脚本在服务器上生成的xml数据.我确实试过Indy IdHTTP.Get但它没有下载任何东西......当我尝试在浏览器或TWebBrowser中打开相同的链接时它显示生成的xml数据,但是当我尝试用IdHTTP Get直接拉它时,没有下载任何内容,就像没有生成数据一样......

Memo1.Lines.Add := idHTTP.Get(url);
Run Code Online (Sandbox Code Playgroud)

提供空的memo1.

任何提示或示例如何首先在某些服务器上执行php脚本,这将生成数据,并下拉该结果?

xml delphi indy delphi-xe6

0
推荐指数
1
解决办法
2102
查看次数

将文本从UTF-8转换为Windows 1251

我尝试将utf8中的文本转换为windows1251.

这是源文本Ñàíêò-Ïåòåðáóðã这是目标Санкт-Петербург

我测试了很多功能:Utf8ToAnsi,UTF8ToString,Utf8Encode等但是没有得到真正的结果.

需要帮忙.

delphi delphi-xe8

0
推荐指数
1
解决办法
3885
查看次数