【delphi11】delphi基础探索【三、基础组件和事件】

目录

基础组件

1. TButton(按钮)

2. TLabel(标签)

3. TEdit(编辑框)

4. TMemo(多行编辑框)

5. TComboBox(组合框)

6. TCheckBox(复选框)

7. TRadioButton(单选按钮)

8. TListBox(列表框)

9. TGroupBox(分组框)

10. TPanel(面板)

11. TImage(图像)

12. TMainMenu(主菜单)

13. TPopupMenu(弹出菜单)

14. TStatusBar(状态栏)

15. TToolBar(工具栏)

16. TTrackBar(滑动条)

17. TProgressBar(进度条)

18. TUpDown(上下按钮)

19. TDateTimePicker(日期时间选择器)

20. TMonthCalendar(月历)

21. TTimer(计时器)

22. TScrollBar(滚动条)

23. TTreeView(树形视图)

24. TListView(列表视图)

25. TPageControl(页面控制)

26. TTabSheet(标签页)

27. TSplitter(分割器)

28. TShape(形状)

29. TBevel(斜面)

30. TRichEdit(富文本编辑器)

31. TScrollBox(滚动框)

32. TStaticText(静态文本)

33. TColorBox(颜色框)

34. TFontDialog(字体对话框)

35. TOpenDialog(打开文件对话框)

36. TSaveDialog(保存文件对话框)

37. TPrintDialog(打印对话框)

38. TPrinterSetupDialog(打印机设置对话框)

39. TImageList(图像列表)

40. TActionList(动作列表)

41. TPageScroller(页面滚动器)

42. TApplicationEvents(应用程序事件)

事件和事件处理器

1. 事件

2. 事件处理器

创建和使用事件处理器

步骤 1:选择组件和事件

步骤 2:自动生成事件处理器

常见事件类型

高级事件处理


基础组件

1. TButton(按钮)

  • 描述:允许用户执行动作,如提交数据或关闭窗口。
  • 常用属性Caption(显示的文本),OnClick(点击事件处理器)。

2. TLabel(标签)

  • 描述:显示不可编辑的文本,常用于描述其他控件或显示信息。
  • 常用属性Caption(显示的文本)。

3. TEdit(编辑框)

  • 描述:允许用户输入单行文本。
  • 常用属性Text(文本内容),MaxLength(最大长度)。

4. TMemo(多行编辑框)

  • 描述:允许用户输入多行文本。
  • 常用属性Lines(文本行数组),ScrollBars(滚动条类型)。

5. TComboBox(组合框)

  • 描述:结合了文本框和下拉列表,用户可以从列表中选择一个选项,也可以输入文本。
  • 常用属性Items(下拉列表的选项),Text(当前文本)。

6. TCheckBox(复选框)

  • 描述:允许用户选择一个或多个选项。
  • 常用属性Checked(是否选中),Caption(显示的文本)。

7. TRadioButton(单选按钮)

  • 描述:允许用户从一组选项中选择一个。
  • 常用属性Checked(是否选中),Caption(显示的文本)。

8. TListBox(列表框)

  • 描述:显示一个项目列表,用户可以从中选择。
  • 常用属性Items(列表中的项目),ItemIndex(选中项目的索引)。

9. TGroupBox(分组框)

  • 描述:提供一个框架来组织相关的控件。
  • 常用属性Caption(分组框标题)。

10. TPanel(面板)

  • 描述:用于组织控件或作为其他控件的容器。
  • 常用属性:无特定,主要作为布局工具。

11. TImage(图像)

  • 描述:用于显示图像。
  • 常用属性Picture(图像内容),Stretch(是否拉伸图像以适应控件大小)。

12. TMainMenu(主菜单)

  • 描述:提供应用程序的主菜单。
  • 常用属性Items(菜单项)。

13. TPopupMenu(弹出菜单)

  • 描述:提供一个在用户右击时显示的菜单。
  • 常用属性Items(菜单项)。

14. TStatusBar(状态栏)

  • 描述:在应用程序底部显示状态信息。
  • 常用属性Panels(状态栏面板)。

15. TToolBar(工具栏)

  • 描述:提供一排按钮,用于快速访问常用命令。
  • 常用属性:通常与 TToolButton 结合使用,放置具体的工具按钮。

16. TTrackBar(滑动条)

  • 描述:允许用户通过滑动选择一个值的控件。
  • 常用属性Min(最小值),Max(最大值),Position(当前位置)。

17. TProgressBar(进度条)

  • 描述:显示任务进度的控件。
  • 常用属性Min(最小值),Max(最大值),Position(当前进度)。

18. TUpDown(上下按钮)

  • 描述:提供一对上下箭头按钮,通常用于增加或减少值。
  • 常用属性Min(最小值),Max(最大值),Position(当前位置)。

19. TDateTimePicker(日期时间选择器)

  • 描述:允许用户选择日期和时间的控件。
  • 常用属性Date(选择的日期),Time(选择的时间)。

20. TMonthCalendar(月历)

  • 描述:显示一个月历,用户可以选择日期。
  • 常用属性Date(当前选择的日期)。

21. TTimer(计时器)

  • 描述:在指定的时间间隔执行代码。
  • 常用属性Interval(触发间隔,以毫秒为单位),OnTimer(触发事件)。

22. TScrollBar(滚动条)

  • 描述:提供一个标准的滚动条,用于控制内容的视图。
  • 常用属性MinMaxPosition

23. TTreeView(树形视图)

  • 描述:显示层次结构数据,如文件系统的目录结构。
  • 常用属性Items(节点集合)。

24. TListView(列表视图)

  • 描述:以列表的形式显示项目,类似于 Windows 中的文件浏览器。
  • 常用属性Items(项目集合),ViewStyle(显示风格)。

25. TPageControl(页面控制)

  • 描述:提供一个包含多个页面(TTabSheet)的控件,每个页面可以容纳其他控件。
  • 常用属性Pages(页面集合),ActivePage(当前激活的页面)。

26. TTabSheet(标签页)

  • 描述:TPageControl 的单个页面。
  • 常用属性:通常作为 TPageControl 的一部分,容纳其他控件。

27. TSplitter(分割器)

  • 描述:允许用户动态调整相邻控件的大小。
  • 常用属性:无特定,用于设计布局。

28. TShape(形状)

  • 描述:用于绘制简单的形状,如圆形、矩形等。
  • 常用属性Shape(形状类型),Brush(填充设置),Pen(边框设置)。

29. TBevel(斜面)

  • 描述:用于创建凹凸效果的矩形区域,常用于视觉分隔。
  • 常用属性Shape(形状),Style(风格)。

30. TRichEdit(富文本编辑器)

  • 描述:一个可以显示和编辑富文本格式的控件,支持不同的字体、颜色和文本格式。
  • 常用属性Lines(文本行),SelText(选中的文本),PlainText(是否纯文本模式)。

31. TScrollBox(滚动框)

  • 描述:一个可包含其他控件的容器,当内容超出其大小时提供滚动条。
  • 常用属性:无特定,主要作为容器使用。

32. TStaticText(静态文本)

  • 描述:用于显示简单的文本信息,类似于 TLabel,但具有更多样式选项。
  • 常用属性Caption(文本内容),Alignment(对齐方式)。

33. TColorBox(颜色框)

  • 描述:显示一个下拉列表,允许用户从预定义的颜色集中选择颜色。
  • 常用属性Selected(选中的颜色)。

34. TFontDialog(字体对话框)

  • 描述:提供一个标准的字体选择对话框。
  • 常用属性Font(选中的字体),Options(对话框选项)。

35. TOpenDialog(打开文件对话框)

  • 描述:允许用户选择文件或文件夹。
  • 常用属性FileName(选中的文件名),Filter(文件过滤器)。

36. TSaveDialog(保存文件对话框)

  • 描述:允许用户指定保存文件的名称和位置。
  • 常用属性:与 TOpenDialog 类似。

37. TPrintDialog(打印对话框)

  • 描述:提供一个标准的打印设置对话框。
  • 常用属性Copies(打印份数),PrintRange(打印范围)。

38. TPrinterSetupDialog(打印机设置对话框)

  • 描述:允许用户修改打印机的设置。
  • 常用属性:通常与系统打印机设置相关。

39. TImageList(图像列表)

  • 描述:用于存储图像集合,常与其他控件(如工具栏)配合使用。
  • 常用属性Images(图像集合),WidthHeight(图像尺寸)。

40. TActionList(动作列表)

  • 描述:管理应用程序的动作(如命令或操作),可以跨多个菜单项和工具栏按钮共享。
  • 常用属性Actions(动作集合)。

41. TPageScroller(页面滚动器)

  • 描述:提供一个滚动区域,可以包含多个控件,通常用于长表单或内容。
  • 常用属性AutoScroll(自动滚动),Orientation(方向)。

42. TApplicationEvents(应用程序事件)

  • 描述:用于处理整个应用程序范围内的事件,如激活、最小化、关闭等。
  • 常用事件OnActivate(激活时),OnDeactivate(失活时),OnException(异常发生时)。
unit MainForm;interfaceuses// 引入必要的单元// ...typeTForm1 = class(TForm)Button1: TButton;Label1: TLabel;Edit1: TEdit;Memo1: TMemo;ComboBox1: TComboBox;CheckBox1: TCheckBox;RadioButton1: TRadioButton;ListBox1: TListBox;GroupBox1: TGroupBox;Panel1: TPanel;Image1: TImage;MainMenu1: TMainMenu;PopupMenu1: TPopupMenu;StatusBar1: TStatusBar;ToolBar1: TToolBar;TrackBar1: TTrackBar;ProgressBar1: TProgressBar;UpDown1: TUpDown;DateTimePicker1: TDateTimePicker;MonthCalendar1: TMonthCalendar;Timer1: TTimer;ScrollBar1: TScrollBar;TreeView1: TTreeView;ListView1: TListView;PageControl1: TPageControl;TabSheet1: TTabSheet;Splitter1: TSplitter;Shape1: TShape;Bevel1: TBevel;RichEdit1: TRichEdit;ScrollBox1: TScrollBox;StaticText1: TStaticText;ColorBox1: TColorBox;FontDialog1: TFontDialog;OpenDialog1: TOpenDialog;PrintDialog1: TPrintDialog;PrinterSetupDialog1: TPrinterSetupDialog;ImageList1: TImageList;ActionList1: TActionList;PageScroller1: TPageScroller;ApplicationEvents1: TApplicationEvents;// 更多组件// ...// 事件处理器procedure Button1Click(Sender: TObject);// 更多事件处理器// ...end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin// 示例:当按钮被点击时,更改标签的文本Label1.Caption := '按钮被点击';
end;// 更多事件处理器的实现
// ...end.

事件和事件处理器

1. 事件
  • 定义:在 Delphi 中,事件是指在程序运行时发生的某种情况,通常由用户操作(如点击、键入)或程序逻辑(如时间到达)触发。
  • 组件事件:几乎所有的 VCL 组件都有事件,如 OnClickOnChangeOnMouseMove 等。
2. 事件处理器
  • 定义:事件处理器是响应特定事件的过程或函数。它定义了当事件发生时应执行的操作。
  • 创建方式:在设计视图中双击一个组件可自动生成事件处理器的框架代码。

创建和使用事件处理器

步骤 1:选择组件和事件
  • 选择你想要响应的事件类型。例如,如果你想在用户点击按钮时执行操作,你将使用 TButtonOnClick 事件。
步骤 2:自动生成事件处理器
  • 在 Delphi 的设计视图中,双击你选择的组件(如 TButton)。这将在代码编辑器中自动生成事件处理器的基本框架。

常见事件类型

  • OnClick:当用户点击组件时触发。
procedure TForm1.Button1Click(Sender: TObject);
beginShowMessage('按钮被点击');
end;
  • OnChange:当组件的内容或状态改变时触发,如编辑框的文本改变。
procedure TForm1.Edit1Change(Sender: TObject);
beginLabel1.Caption := '编辑框内容已更改为: ' + Edit1.Text;
end;
  • OnEnter:当组件获得焦点时触发。
procedure TForm1.Edit1Enter(Sender: TObject);
beginEdit1.Color := clYellow;  // 当编辑框获得焦点时,改变其背景颜色
end;
  • OnExit:当组件失去焦点时触发。
procedure TForm1.Edit1Exit(Sender: TObject);
beginEdit1.Color := clWhite;  // 当编辑框失去焦点时,恢复其背景颜色
end
  • OnKeyPress:当用户在组件上按键时触发。
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
beginif Key = #13 then  // #13 是回车键的 ASCII 码ShowMessage('按下了回车键');
end;

高级事件处理

  • 事件传递:一个事件可以从一个组件传递到另一个组件,或者由一个组件处理后再传递给默认的处理器。

        在 Delphi 中,事件传递是一个强大的特性,它允许一个事件在不同组件之间传递或在多个层级上处理。这种机制非常有用,特别是当你想要在一个组件处理事件之后,再由另一个组件进一步处理相同的事件。以下是一个简单的例子,演示如何在 Delphi 中实现事件传递。

        假设我们有两个按钮:Button1Button2。我们希望当用户点击 Button1 时,先执行 Button1 的点击事件处理器,然后再自动触发 Button2 的点击事件。

  1. 设计界面

    • 在窗体上放置两个按钮:Button1Button2
  2. 为 Button1 创建事件处理器

    • 双击 Button1 自动生成事件处理器。
    • Button1Click 事件处理器中编写代码以触发 Button2 的点击事件。
  3. 为 Button2 创建事件处理器

    • 双击 Button2 自动生成事件处理器。
    • Button2Click 事件处理器中编写响应代码。
procedure TForm1.Button1Click(Sender: TObject);
begin// Button1 的事件处理代码ShowMessage('Button1 被点击');// 触发 Button2 的点击事件Button2Click(Sender);
end;procedure TForm1.Button2Click(Sender: TObject);
begin// Button2 的事件处理代码ShowMessage('Button2 被点击');
end;

         在这个例子中,当 Button1 被点击时,它首先显示一个消息("Button1 被点击"),然后通过直接调用 Button2Click 方法来触发 Button2 的点击事件。这样,即使用户没有直接点击 Button2Button2 的点击事件也会被执行,并显示第二个消息("Button2 被点击")。

  • 动态事件处理:可以在运行时动态地为组件分配事件处理器,增加灵活性。

        动态事件处理是 Delphi 编程中一个强大的特性,它允许程序在运行时为组件动态分配事件处理器。这种方法在需要根据应用程序的状态或用户的操作来改变事件响应行为时非常有用。以下是一个使用动态事件处理的示例。

        假设我们有一个按钮 Button1 和两个不同的事件处理器:HandleButtonClick1HandleButtonClick2。我们将在运行时根据某些条件(例如,用户的选择或程序状态)决定 Button1 使用哪个事件处理器。

  1. 设计界面

    • 在窗体上放置一个按钮:Button1
  2. 编写两个不同的事件处理器

    • 这两个处理器将在用户点击按钮时执行不同的操作。
  3. 在运行时动态分配事件处理器

    • 根据程序逻辑或条件,决定 Button1 应该使用哪个事件处理器。
procedure TForm1.HandleButtonClick1(Sender: TObject);
beginShowMessage('处理器 1 被调用');
end;procedure TForm1.HandleButtonClick2(Sender: TObject);
beginShowMessage('处理器 2 被调用');
end;

        接下来,在程序的某个逻辑部分(例如,在窗体的 OnCreate 事件或根据用户的某个选择),动态地为 Button1 分配事件处理器: 

procedure TForm1.FormCreate(Sender: TObject);
begin// 假设这里的条件是基于某些程序逻辑if SomeCondition thenButton1.OnClick := HandleButtonClick1elseButton1.OnClick := HandleButtonClick2;
end;

        在这个例子中,根据 SomeCondition 的值,Button1OnClick 事件将被动态地关联到 HandleButtonClick1HandleButtonClick2。这意味着当用户点击这个按钮时,将根据在窗体创建时设定的条件调用不同的事件处理器。 

  • 共享事件处理器:多个组件可以共享同一个事件处理器,例如,多个按钮可以共用一个 OnClick 事件处理器。
  1. 设计界面

    • 在窗体上放置三个按钮:Button1Button2Button3
  2. 创建共享的事件处理器

    • 创建一个事件处理器,它将被所有三个按钮共享。
  3. 为每个按钮分配相同的事件处理器

    • 在设计时或运行时,将此事件处理器分配给每个按钮的 OnClick 事件。
procedure TForm1.SharedButtonClick(Sender: TObject);
varButton: TButton;
beginif Sender is TButton thenbeginButton := TButton(Sender);ShowMessage(Button.Name + ' 被点击');end;
end;

        在上面的代码中,我们首先检查 Sender 是否为 TButton 类型。这是因为 Sender 参数表示触发事件的组件,而我们想要确定它确实是一个按钮。然后我们使用 TButton(Sender)Sender 转换成 TButton 类型,并显示一个包含按钮名称的消息。

        接下来,我们需要为每个按钮分配这个事件处理器。这可以在设计视图中完成,也可以通过代码完成:

procedure TForm1.FormCreate(Sender: TObject);
beginButton1.OnClick := SharedButtonClick;Button2.OnClick := SharedButtonClick;Button3.OnClick := SharedButtonClick;
end;

        在 FormCreate 事件处理器中,我们将 SharedButtonClick 分配给每个按钮的 OnClick 事件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/236885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PSP - 蛋白质与蛋白质的扩散对接 DiffDock-PP 算法

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/135115528 DiffDock-PP is a new approach to rigid-body protein-protein docking that is based on a diffusion generative model that learns…

PHP数据格式化加,加‘‘引号处理

原数据格式: ABC20231217043116afj6J0I6WV ABC20231217043116dlSyOB5Tvx ABC202312170431166EbL7BbYOm ABC20231217043116troQuaKWzw ABC20231217043116o7ZELjjF7E ABC20231217043122FFp1CSPLQ2 ABC20231217043133uJIBKil3bC ABC202312170431337z4bZwGJVS ABC20231217043133fi…

软件工程快速复习(期末急救)

每个同学要假想自己是一个项目经理,去完成一个软件项目,比如医院管理系统,自动设备控制系统等,以面向结构的软件工程方法,说出完成项目的步骤,涉及到的具体技术。初步了解面向对象的方法的与面向结构的方法…

【java】java学习笔记

1. 快速入门 // Hello类 public class Hello {// main方法public static void main(String[] args) {System.out.println("hello world!");} } 在控制台输入以下命令,对.java文件(源文件)进行编译操作,生成Hello.clas…

每日一题,二维平面

给你 二维 平面上两个 由直线构成且边与坐标轴平行/垂直 的矩形,请你计算并返回两个矩形覆盖的总面积。 每个矩形由其 左下 顶点和 右上 顶点坐标表示: 第一个矩形由其左下顶点 (ax1, ay1) 和右上顶点 (ax2, ay2) 定义。 第二个矩形由其左下顶点 (bx1, …

初学gitrepo的种种

经过各种折腾之后,发现git其实还是很简单的; 首先你需要两台机器,一台作为服务器,一台作为开发机器,开发机器从服务器上拉取代码。 目 目录 git建仓 开发机器拉取代码 初始化仓代码 repo管理 repo工具的下载 …

汽车制造厂设备故障预测与健康管理PHM

在现代汽车制造工业中,设备的可靠性和稳定性对于保证生产线的高效运行至关重要。为了提高生产效率、降低维修成本以及确保产品质量,汽车制造厂逐渐采用设备故障预测与健康管理(PHM)系统,以实现对设备状态的实时监测和预…

算法基础之快速幂求逆元

快速幂求逆元 核心思想&#xff1a; 逆元&#xff1a; 逆元 ap-2 mod p #include<iostream>#include<algorithm>using namespace std;typedef long long LL;LL pmi(int a,int b,int c){LL res 1;while(b){if(b & 1) res res * a %c;b >> 1;a (LL)…

Jenkins的文档翻译

官网Jenkins.io Jenkins用户文档 欢迎来到Jenkins用户文档-为那些想要使用Jenkins的现有功能和插件特性的人。如果你想通过开发自己的Jenkins插件来扩展Jenkins的功能&#xff0c;请参考extend Jenkins(开发者文档)。 詹金斯是什么? Jenkins是一个独立的、开源的自动化服务…

第七节TypeScript 循环

1、简述 有的时候&#xff0c;我们可能需要多次执行同一块代码。一般情况下&#xff0c;语句是按顺序执行的&#xff1a;函数中的第一个语句先执行&#xff0c;接着是第二个语句&#xff0c;依此类推。 循环语句允许我们多次执行一个语句或语句组。 循环语句流程图&#xff…

python学习笔记--异常捕获

异常场景 numinput("input you number:") n9000 try:resultn/int(num)print({} 除以num 结果为{}.format(n,result)) except ZeroDivisionError as err:print("0不可以作为除数&#xff0c;出现报错{}".format(err)) except ValueError as err:print(&quo…

【lesson21】MySQL复合查询(2)子查询

文章目录 子查询测试要用到的表测试要用到的数据单行子查询案例 多行子查询案例 多列子查询案例 在from子句中使用子查询案例 合并查询union案例union all案例 子查询 子查询是指嵌入在其他sql语句中的select语句&#xff0c;也叫嵌套查询 测试要用到的表 测试要用到的数据 单…

坚持提升这个能力,让你越来越强大

哈喽&#xff0c;你好啊&#xff01;我是雷工。 今天在读《张一鸣管理日志》时&#xff0c;看到这么一句话&#xff1a; “产品创新要从根本上解决问题&#xff0c;而不是想办法绕过问题&#xff0c;解决的问题很可能就是将来的核心竞争力。” 这让我想起了亚马逊公司&#x…

LeetCode 热题100——单调栈

​ 个人主页&#xff1a;日刷百题 系列专栏&#xff1a;〖C语言小游戏〗〖Linux〗〖数据结构〗 〖C语言〗 &#x1f30e;欢迎各位→点赞&#x1f44d;收藏⭐️留言&#x1f4dd; ​ ​ 写在前面&#xff1a; 递增单调栈&#xff1a;栈中元素从栈底到栈顶依次增大 递减单调栈…

3D模型人物换装系统(二 优化材质球合批降低DrawCall)

3D模型人物换装系统 介绍原理合批材质对比没有合批材质核心代码完整代码修改总结 介绍 本文使用2018.4.4和2020.3.26进行的测试 本文没有考虑法线贴图合并的问题&#xff0c;因为生成法线贴图有点问题&#xff0c;放在下一篇文章解决在进行优化 如果这里不太明白换装的流程可以…

HarmonyOS引导页登陆页以及tabbar的代码说明1

效果 以下代码是东拼西凑出来的。只是为了个人熟悉一下相关模块的使用&#xff1a; 用的知识点&#xff1a; Resouces 此部分分内容可以在项目中找到&#xff1a; resources/base/element/color.json 为项目着色配置&#xff0c;当然也可以正接在代码里写 float.json 为相关…

IPv6路由基础-理论与配置

在企业网络中&#xff0c;IPv6技术的应用越来越普及。IETF组织针对IPv6网络制定了路由协议OSPFv3。 OSPFv3 ff02::5是为OSPFv3路由协议预留的IPv6组播地址。OSPFv3中的路由条目下一跳地址是链路本地地址。OSPFv3是运行在IPv6网络的OSPF协议。运行OSPFv3的路由器使用物理接口的…

华为云Stack 8.X 流量模型分析(一)

一、基础知识 1.tap与tun ​ tap与tun都是操作系统&#xff08;Linux&#xff09;内核中的虚拟网络设备&#xff0c;等同于一个以太网设备&#xff0c;可以收发数据报文包。 ​ tap与tun的定义相同&#xff0c;两者仅仅是通过一个Flag来区分。但二者所承担的功能差别较大&am…

centos磁盘扩容

[rootlocalhost ~]# fdisk -l磁盘 /dev/sda&#xff1a;429.5 GB, 429496729600 字节&#xff0c;838860800 个扇区 Units 扇区 of 1 * 512 512 bytes 扇区大小(逻辑/物理)&#xff1a;512 字节 / 4096 字节 I/O 大小(最小/最佳)&#xff1a;4096 字节 / 4096 字节 磁盘标签类…

浅析 fuse kernel mmap write 过程及性能问题

前言 最近在项目里面用到了fuse文件系统&#xff0c;在使用过程中遇到了一个内核在做mmap write的一个bug&#xff0c;目前并没有从根本上解决这个bug&#xff0c;而是通过修改fuse kernel module的一些参数&#xff0c;绕开了这个bug。这里记录一下这个问题&#xff0c;并顺便…