微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取 FMX TMemo 中的插入符号位置行和字符

如何解决获取 FMX TMemo 中的插入符号位置行和字符

我尝试在包含两个标签的状态栏中显示备忘录插入符号的位置。

我试过了:

lblX.Text := Memo.Caret.Pos.X.ToString();

lblY.Text := Memo.Caret.Pos.Y.ToString();

这两个值似乎代表了备忘录左侧和顶部的实际位置。

是否可以将其作为行(行)和列(字符)获取

我想澄清一下,我与 firemonkey 一起工作,以便能够将我的项目编译到 windows 和 linux。

感谢您的回答。

Selticq。

解决方法

我以前从未使用过 FMX,但使用 Code Insight 我立即发现 Memo.CaretPosition.LineMemo.CaretPosition.Pos 分别代表当前行和列。

documentation 证实了这一点:

Line 表示包含光标的行号,从零开始索引。

Pos 表示光标的水平字符坐标,从零开始索引。

[...]

因此,如果 Line = 3Pos = 5,则光标位于第四行和行首的第六个字符处。

,

如果你想显示备忘录插入符号的位置,你可以使用这样的代码:

#importing dependencies

import numpy as np
import logging
import discord
import PIL
import asyncio
import os

#importing commands from above dependencies

from discord import client
from discord.ext import commands
from PIL import Image,ImageFont,ImageDraw
from discord.member import Member

#enabling privileged intents

intents = discord.Intents.default()
intents.members = True
intents.presences = True
client = discord.Client(intents=intents)

#for custom image welcome message

@client.event
async def on_member_join(ctx,member: discord.Member = None):

    if member == None:
        member = ctx.author
    channel = client.get_channel("TOKEN")

    #-----------------------------------------------------------------------------#   

    #transforming user's avatar into a circle

    # Open the input image as numpy array,convert to RGB
    img=Image.open(member.avatar_url).convert("RGB")
    npImage=np.array(img)
    h,w=img.size

    # Create same size alpha layer with circle
    alpha = Image.new('L',img.size,0)
    draw = ImageDraw.Draw(alpha)
    draw.pieslice([0,h,w],360,fill=255)

    # Convert alpha Image to numpy array
    npAlpha=np.array(alpha)

    # Add alpha layer to RGB
    npImage=np.dstack((npImage,npAlpha))

    # Save with alpha
    Image.fromarray(npImage).save("D:\Coding\Python\Projects\discord_moderation_bot\imgs\result.png")
    
    #-----------------------------------------------------------------------------#
    
    #pasting user avatar into welcome banner
    
    img = Image.open("D:\Coding\Python\Projects\discord_moderation_bot\imgs\welcome_banner.png")
    pfp = Image.open("D:\Coding\Python\Projects\discord_moderation_bot\imgs\result.png")
    
    pfp = pfp.resize ((167,167))

    img.paste(pfp,(120,104))

    img.save("D:\Coding\Python\Projects\discord_moderation_bot\imgs\welcome.jpg")

    await ctx.send(file = discord.File("welcome.jpg"))


client.run("TOKEN")

如果您想要在正确的事件处理程序中调用该方法的完整示例代码,这里是:

procedure TForm1.UpdateCaretPosDisplay;
begin
    lblX.Text := (Memo1.CaretPosition.Pos + 1).ToString;
    lblY.Text := (Memo1.CaretPosition.Line + 1).ToString;
end;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。