微信小程序使用Vant

微信小程序使用Vant,第1张

将 appjson 中的 "style": "v2" 去除,小程序的新版基础组件强行加上了许多样式,难以覆盖,不关闭将造成部分组件样式混乱。

开发者工具创建的项目,miniprogramRoot 默认为 miniprogram,packagejson 在其外部,npm 构建无法正常工作。需要手动在 projectconfigjson 内添加如下配置,使开发者工具可以正确索引到 npm 依赖的位置。

打开微信开发者工具,点击  工具 -> 构建 npm ,并勾选  使用 npm 模块  选项,构建完成后,

到 全局配置 appjson 中注册引入组件,详见 快速上手 。

支持default、primary、info、warning、danger五种类型,默认为default。  格式:

通过plain属性将按钮设置为朴素按钮

设置hairline属性可以开启 05px 边框,基于伪类实现。

通过disabled属性来禁用按钮,此时按钮的bind:click事件不会触发。

通过loading属性来设置加载按钮   loading-type="spinner"   loading-text="加载中"

通过icon属性设置按钮图标,支持 Icon 组件里的所有图标,也可以传入图标 URL。

label     输入框左侧文本

type    可设置为任意原生类型, 如 number   idcard    textarea    digit

readonly  是否只读

custom-style    自定义样式

autosize    是否自适应内容高度,只对 textarea 有效,可传入对象,如 { maxHeight: 100, minHeight: 50 },单位为px

show :是否显示 

onClose 点击其他位置,关闭d出层

position            可以设置为top、bottom、left、right。

Picker 选择器 需要配合d出层使用

<van-picker columns="{{ columns }}" bind:change="onChange" />

columns 对象数组,配置每一列显示的数据

onChange(e)    有默认参数 e 

value-key    选项对象中,文字对应的 key 通常用于对象数组

show-toolbar    是否显示顶部栏

defaultIndex     初始选中项的索引,默认为 0  不是双向绑定 需要自己改变defaultIndex  的值  需要渲染两次

unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes,

   Graphics, Controls, Forms,

  Dialogs, Menus, Buttons, StdCtrls;

type

  TForm1 = class(TForm)

    Button1: TButton;

    MainMenu1: TMainMenu;

    hgfhf1: TMenuItem;

    hgfhfg1: TMenuItem;

    fghfg1: TMenuItem;

    Button2: TButton;

    quit1: TMenuItem;

    procedure fghfg1Click(Sender: TObject);

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure quit1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

implementation

{$R dfm}

procedure TForm1fghfg1Click(Sender: TObject);  {快捷键F12 对应的菜单项}

begin

     Form1Button1Click(Sender);

end;

procedure TForm1Button1Click(Sender: TObject);

begin

   showmessage('ghgfhgf');

end;

procedure TForm1Button2Click(Sender: TObject);

begin

      halt;

end;

procedure TForm1quit1Click(Sender: TObject);   {快捷键F11 对应的菜单项}

begin

      Form1Button2Click(Sender);

end;

end

 

只有菜单项才能定义快捷键,以上程序是将菜单项和button按钮绑定 实现。

在组件中绑定一个事件处理函数。

如bindtap,当用户点击该组件的时候会在该页面对应的Page中找到相应的事件处理函数

<view bindtap="view"> <text bindtap="toast" class="journey">开启小程序之旅 </text> </view>

子元素触发父级元素也会触发若要只触发子元素使用catchtap代替bindtap

在相应的Page定义中写上相应的事件处理函数,参数是event。

Page({ toast: function (event) { // wxnavigateTo({ // url: '/redirect/redirect' // }); wxredirectTo({ url: '/redirect/redirect', }); // view:function(event){ // // 父级元素 // } }, / 生命周期函数--监听页面隐藏/并未关闭返回 / onHide: function (event) { consolelog(event) }, / 生命周期函数--监听页面卸载/ / onUnload: function () { consolelog(222) }, })

事件分类

冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递。

非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递。

WXML的冒泡事件列表:

类型 触发条件 touchstart 手指触摸动作开始 touchmove 手指触摸后移动 touchcancel 手指触摸动作被打断,如来电提醒,d窗 touchend 手指触摸动作结束 tap 手指触摸后马上离开 longtap 手指触摸后,超过350ms再离开

注:除上表之外的其他组件自定义事件如无特殊申明都是非冒泡事件,如<form/>的submit事件,<input/>的input事件,<scroll-view/>的scroll事件,(详见各个组件官方文档)

项目是从mpvue迁移过来,vant小程序组件在mpvue里使用都是正常的,但是迁移到uniapp后在小程序里@click@close等点击事件不起作用且报错。

[步骤]在appjson里引入了van-button组件"usingComponents":{"van-button":"/wxcomponents/vant/button/index"}点击按钮[结果]在页面上也显示了vant的按钮组件,但是点击确没有效果,并报错。

Private Sub Command1_Click()

   Label2Caption = InputBox("输入姓名", "输入提示")

End Sub

1、首先,双击窗体空白处进copy入代码窗口。

2、然后我们在事件中找到百Click事件。

3、这个度时候开始编写代码测试问Print "我是Click单击答属性!"。

4、然我们开始运行测试。

5、启动后,我们在窗体空白处单击。

6、这个时候我们将可以看到测试的效果。

我收回以下的话,因为我看到了“键盘上的灵魂”等人的回答。之所以说这些是因为以前有次在知道里回答问题结果提问者选了一个最错的答案,让我很气愤。。

''''我本来不想回答,因为在知道上回答问题太亏了,我重视的不是积分,

''''而是中选率。回答这样的问题很多人都是看了答案以后一知半解,

''''随便选一个就通过了。根本不管我的答案是真正正确的。

一、t1~t5 没有经过声明,在vb中默认是可以使用的,只要你的代码最上面没有“option explicit”声明。而关于数据类型,几位都没有说出来,其实这却是根本所在:没有声明的变量类型是Variant类型。

但是不声明在编程语言里是不规范的。

这个类型叫做“变体”,就相当于是其他语言里面的object类型。他可以接受任何类型的赋值。如:

dim a as integer,b as string,v as variant 'v可以不声明

v=a

v=b

都可以。

而t1 = (s1 + s2 + s3 + s4 + s5 >= 450)

其实是

t1的值此时是什么呢?

我们知道 if a>0 then 这句中,a>0所产生的结果是 true或false,也就是Boolean类型。所以当 >、>=、<、<=、=(作为比较是否相等的时候) 作为值赋给变量的时候,它是作为Boolean类型的。

而t1是variant类型,可以兼容Boolean型,因此直接作为Boolean型来用。

如果用整形来存储boolean型,vb自动将true转换为-1,而false转换为0。

说的多了点,但是了解这些才能更好的学习编程。

再多说一句:true之所以转换为-1,是为了做or或and运算,vb的本意是用这两个运算符做位运算,但是实际人们都用来做逻辑运算,-1转换为16进制是FFFF FFFF,而0转换是0000 0000,正好满足or和and的位 *** 作和逻辑 *** 作的一致性。

二、我不知道你的程序是哪里里来的,我要告诉你一点,你的程序是错的!

有没有人注意到,dim s1 as string 这句话。后来有一句:t1=(s1+s2++s5>=450)我知道你的本意是要判断总成绩大于450分,但是你前面定义的是string类型的数据,string类型的+运算符是连接符,因此如果s1~s5分别为1分到5分,那么s1+s2++s5就等于“12345”,12345当然会大于450,但是总分才15分,显然逻辑上是错误的。

数据类型真的很重要的。

应该改为 dim s1 as single,s2 as single

解释你的问题:

if t1 or t2 or t3 then p="" else p=""

这句话,显然是将 t1,t2,t3 三个变量作为Boolean类型进行判断。

t1,t2,t3三个值只要有一个是 True 就满足条件。or 运算符就是只要有一个为true结果就是true

p=这句话就是一个字符串连接 *** 作。

str()函数是将数字转换为字符串,没什么难的,“&”是字符串的标准连接符,与“+”的区别是

3+4=7 ,而 "3"+"4"="34","3"+4="34" 更正见下

3&4="34","3"&"4"="34","3"&4="34"

你自己体会一下就明白了。

Chr(13)是一个回车,就是换一行显示。可以写成VbNewLine。

p= & p 的意思是在p的前面添加其他字符串

两个语句的自然语言意义是:

如果 t1 ,t2 ,t3 之中有一个条件满足,则令 p 等于“可以获奖”否则 p 等于“不能获奖”

然后在 p 的前面添加得分列表和一个换行符。

p最终变成了“

32,4,32,53,89

不能获奖

看不懂没关系,以后慢慢会懂的。不过你应该能知道谁回答的正确。

楼下的谢谢,我知道是有区别的,在内存中的存储和基本用法是一样的。所以一直当作一样的来说。实质上vb6-没有继承,所以在逻辑上的关系是不一样的。vbnet就把基本的variant改成了object了。

-----------------------------------------------------------------------

再更正一下:上面标记的地方我说错了一点,就是 "3"+4 应该等于 7 !当时没有确认一下,对不起,在此谢罪,各位中秋快乐

已经是第二次了,最初,我输入了很多文字,结果多按了一下ESC,就全都没有了。。。刚才点了个优化大师上的链接,d出个网页,把这个页面给覆盖了。输入的东西又没了。。

再写一次。。

我自己试过的:输入“1,2,3,4,5”这五个成绩,得出的结果是可以得奖,所以是错误的。

vb里面的加号对变体对象是一个相当头疼的运算符。

它遵循下面几个规则:

1如果两边都是字符串,他就做连接 *** 作,"3"+"4"="34"

2如果两边都是数值,就做算数 *** 作,3+4=7

3如果一边是数值一边是字符串,则:

如果字符串可以转为数值,则取算数 *** 作。"3"+4=7

否则提示出错:3+"k"错误:类型不匹配,要进行连接请使用 & 运算符。

而"&"运算符则遵循:

1运算符两边任何值都转换为字符串。

2当数字转换为字符串的时候是默认调用format(i)进行转换的。

而且当数字赋值给字符串变量时,自动转换为字符串,所取转换函数为format(i)。可见你的代码:

dim s1 as string

s1=val(input) '假设这里输入一个"3"

s1的结果就是 s1=format(val("3")) ,经过两次转换之后,s1的值为"3",是字符串类型。

由上面加号的规则,就是连接 *** 作。

由此可见,数值类型的选择更为重要:

1只要确定你的变量取值,一定要用确切的类型。

2定义时要注意,dim i,j,k as integer,的结果不是你想象的那样,三个类型都是integer型,而是只有k是integer型,而i和j是variant型。正确的应该是dim i as integer,j as integer,k as integer。

3variant可以用来代表字符串,数字,数组,对象……任何类型,但是处理起来最麻烦,尽量不要使用,不过也很难避免,比如split函数和把数组作为参数传递的时候,用variant很方便。

4基本数值类型转换要用标准转换函数好一些:cstr,cint,cdbl,cbool,clng,cbyte……因为这些函数的数据类型比较确定。

多说两句,比较format(3)和str(3)和cstr(3)三个转换为字符串的函数:

format(3)和CStr(3)得到的结果都是"3"

str(3)得到的结果是" 3",数字前面有空格,并不是永远会有空格,只是因为前面省略了正号"+",如果是负数就没有空格了,就是"-3"

format(3,"00")的结果是"30",这就是用format的优势。

日期也可以用format来格式化

format(now,"yyyy年代MM月分dd太阳,HH点了mm分钟ss秒针")就可以以固定的格式输出。

Dim sec, min, h

Private Sub Command1_Click()

Timer1Enabled = True

h = Text1Text

min = Text2Text

sec = Text3Text

Timer2Enabled = False

End Sub

Private Sub Command2_Click()

End

End Sub

Private Sub Form_Load()

Form1BackColor = &HFFFF00

Timer1Enabled = False

Timer1Interval = 1000

Timer2Enabled = True

Timer2Interval = 1000

Text1Text = 2

Text2Text = "00"

Text3Text = "00"

Command2Caption = "退出"

Command1Caption = "开始倒计时"

End Sub

Private Sub Timer1_Timer()

If sec > 0 Then

sec = sec - 1

Else:

If (min > 0 Or h > 0) Then

sec = 59

End If

If min > 0 Then

min = min - 1

Else:

If h > 0 Then

min = 59

End If

If h > 0 Then

h = h - 1

Else: Timer1Enabled = False

CreateObject("SAPISpVoice")Speak "GAME OVER!"

Form1BackColor = &HFF

End If

End If

End If

Text1Text = h

Text2Text = min

Text3Text = sec

Label6Caption = Now

End Sub

Private Sub Timer2_Timer()

Label6Caption = Now

End Sub

以上就是关于微信小程序使用Vant全部的内容,包括:微信小程序使用Vant、delphi新手,写了一个小程序,我想按下F12的时候 ,实现点击button1的功能、小程序view嵌套点击事件问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10630469.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存