一、网页基础

 //
// ViewController.m
// IOS_0218_网页开发1
//
// Created by ma c on 16/2/18.
// Copyright © 2016年 博文科技. All rights reserved.
// #import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UIWebView *webView; @end @implementation ViewController /*
一、UIWebView
1.什么是UIWebView
1>UIWebView是IOS内置浏览器控件
2>系统自带的Safari浏览器就是通过UIWebView实现的 2.UIWebView不但能加载远程的网页资源,还能在家大部分常见文件
1>html\htm
2>pdf\doc\ppt\txt
3>... 二、网页的组成
1.HTML(网页的具体内容和结构)
2.CSS(网页的样式,美化网页最重要的一块)
3.JavaScript(网页的交互效果,比如对用户鼠标事件做出响应)
4.学习资料:http://www.w3school.com.cn/ 三、HTML
1.全称:Hyper Text Markup Language,超文本标记语言
2.其实就是文本,由浏览器将它解析成具体网页内容
3.HTML组成:N个标签组成
5.语法松散,最新版本HTML5
6.常见标签:
1>标题:h1,h2,h3
2>段落:p
3>换行:br
4>容器:div,span(容纳其他标签)
5>表格:table,tr,td
6>列表:ul,ol,li
7>图片:img
8>表单:input
9>链接:a
7.编辑工具:dreamweaver,WebStorm 四、CSS
1.全称:Cascading Style Sheets,层叠样式表
2.作用:美化网页
3.CSS编写格式:键值对形式
4.三种书写形式:
1>行内样式:(内联样式)直接在标签的style属性中写
<body style = "color: red;">
2>内页样式:在本网页的style属性中写
<style type = "text/css">
body{
color: red;
}
</style>
3>外部样式:在单独的CSS文件中写,然后在网页中用link标签引用
<link rel = "stylesheet" href = "test.css"> 五、CSS选择器
1.标签选择器 - 选择对应的标签,为之添加样式
2.类选择器 - 在标签后加class属性,用.类名添加样式
3.id选择器 - 在标签后加id属性,用#id名添加样式
4.群组选择器 - 格式:标签,.类名,#id名添加样式
5.选择器组合 - 格式:标签.类名 或者 标签#id名
6.后代选择器 - 格式:标签 子标签,标签 子标签
7.子标签选择器 - 格式:标签 > 子标签(直接子标签)
8.相邻兄弟选择器 - 格式:标签 + 标签
9.属性选择器 - 格式:标签[属性] 或者 标签[属性][属性] 或者 标签[属性 = “属性名”]
10.伪类
1>:active 向被激活的元素添加样式
2>:focus 想拥有键盘输入焦点的元素添加样式
3>:hover 当鼠标悬浮在元素上方时,向元素添加样式
4>:link 向未被访问的链接添加样式
5>:visited 向已被访问的链接添加样式
6>:first-child 向元素的第一个子元素添加样式
7>:lang 向带有指定lang属性的元素添加样式
11.伪元素
1>:first-letter 向文本的第一个字母添加特殊样式
2>:first-line 向文本的首行添加特殊样式
3>:before 在元素之前添加内容
4>:after 在元素之后添加内容 六、选择器优先级
1.优先级排序:
1>important>内联>id>类>标签|伪类|伪元素>通配符>继承
2.选择器的针对性越强,它的优先级越高
3.选择器的权值
1>通配选择符(*):0
2>标签:1
3>类:10
4>属性:10
5>伪类:10
6>伪元素:1
7>id:10
8>!important:100
4.原则:选择器权值加在一起,大的优先;如果相同,后定义的优先 七、HTML标签类型(三大类)
1>块级标签:独占一行的标签
块级元素水平居中:设置自己的margin:0px auto
2>行内标签:多个行内标签能显示在一行
非块级元素水平居中:设置父类标签,text-align:center
3>行内-块级标签 八、修改标签的显示类型
1.CSS中有个display属性,能修改标签的显示类型
1>none:隐藏标签
2>block:块级类型,能随时设置宽度和高度
3>inline:行内类型,宽高取决于内容尺寸
4>inline-block:行内-块级类型 九、CSS属性
1.根据继承分类(两类)
1>可继承属性
父标签的属性值会传递给子标签 - 一般是文字属性
2>不可继承属性
父标签的属性值不能传递给子 - 一般是区块控制属性
2.所有标签可继承
visibility,cursor
3.内联标签可继承
letter-spacing,word-spacing,white-space,line-height,color,font,font-family,font-size,font-style,
font-variant,font-weight,text-decoration,text-transform,direction
4.块级标签可继承
text-indent,text-align
5.列表标签可继承
list-style,list-style-type,list-style-position,list-style-image
6.不可继承
display,margin,border,padding,background,
height,min-height,max-height,width,min-width,max-width
overflow,position,left,right,top,bottom,z-index
float,clear
table-layout,vertical-align
page-break-after,page-bread-before
unicode-bidi 十、盒子模型
1.网页上每个标签都是一个盒子
2.每个盒子有四个属性
1>内容(content)
属性:
height
width
max-height
max-width
min-height
min-width
2>填充(padding,内边距)
属性
padding
padding-bottom
padding-left
padding-right
padding-top
3>边框(border,盒子本身)
属性
border-width
border-style
border-color
border-radius
4>边界(margin,外边距)
属性
margin
margin-bottom
margin-left
margin-right
margin-top 十一、CSS布局
1.默认情况下,所有的网页都在标准流布局中
1>从上到下,从左到右
2.脱离标准流的方法
1>float属性
2>position属性和left,right,top,bottom属性
3.position属性值
1>absolute:生成绝对定位元素,相对于static定位以外的第一个父元素进行定位。元素的位置通过eft,right,top,
bottom属性进行规定
2>fixed:生成绝对定位元素,相对于浏览器窗口进行定位。元素的位置通过eft,right,top,bottom属性进行规定
3>relative:生成相对定位元素,相对于其正常位置进行定位
4>static:默认值,没有定位,元素出现在正常流中
5>inherit:规定应该从父元素继承position属性的值
4.子绝父相:子元素相对于父元素进行定位
*/ - (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor cyanColor]; [self loadWebView];
} - (void)loadWebView
{
//伸缩页面填充整个webView
self.webView.scalesPageToFit = YES; //NSURL *url = [NSURL URLWithString:@"http://localhost:8080/MJServer/"];
NSURL *url = [[NSBundle mainBundle] URLForResource:@"01-学前须知" withExtension:@"pptx"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
} @end

二、JavaScript和UIWebView代理

 //
// ViewController.m
// IOS_0219_网页开发2
//
// Created by ma c on 16/2/19.
// Copyright © 2016年 博文科技. All rights reserved.
// #import "ViewController.h" @interface ViewController ()<UIWebViewDelegate> @property (weak, nonatomic) IBOutlet UIBarButtonItem *forwardItem;
@property (weak, nonatomic) IBOutlet UIBarButtonItem *rewindItem; - (IBAction)rewind:(id)sender;
- (IBAction)forward:(id)sender; @property (nonatomic, weak) UIWebView *webView; @end
/*
一、JavaScript
1.定义:JavaScript是一门广泛应用于浏览器客户端的脚本语言
1>Netspace公司设计,当时与sun公司合作,所以名字有点像java
2>业内一般称JS 2.JS常见用途
HTML DOM操作(节点操作,比如添加,修改,删除节点)
给HTML网页增加动态功能,比如动画
事件处理:监听鼠标点击,鼠标滑动,键盘输入 3.JS的书写形式
1>常见书写形式(2种)
a.页内JS:在当前网页的script标签中写
<script type="text/javascript">
</script>
b.页外JS
<script src="index.js"></script> 4.JS基本操作(CRUD)
1>C(create)
var div = document.createElement('div');
document.body.appendChild(div);
2>R(read)
var div = document.getElementById('logo');
var div = document.getElementsByTagName('div')[0];
var div = document.getElementsByClassName('logo')[0];
3>U(update)
var img = document.getElementById('logo');
img.src = 'images/01.png';
4>D(delete)
var img = document.getElementById('logo');
img.parentNode.removeChild(img); 5.事件绑定
1>推荐做法
var button = document.getElementById('login')
button.onclick = function{
点击按钮想实现的事
}
2>直接写在标签内部
<button onclick="var age = 10;alert(age);">登录</button>
3>不常用
function login{
点击按钮想实现的事
}
var button = document.getElementById('login')
button.onclick = login; 二、jQuery
1.通过选择器查找元素
1>$('选择器') - jQuery支持大部分的CSS选择器 2.属性操作
1>获得属性:$('选择器').attr('属性名');
2>设置属性:$('选择器').attr('属性名','属性值'); 3.显示和隐藏
1>显示:$('选择器').show();
2>隐藏:$('选择器').hide();
3>显示和隐藏来回切换:$('选择器').toggle(); 4.事件绑定
1>点击事件
a.
$('选择器').click(function(){
//实现点击按钮所要做的事
}) b.
function login{
点击按钮想实现的事
}
$('选择器').click(login) 三、参考手册
1.www.w3school.com
2.http://www.w3school.com.cn/jquery/jquery_reference.asp
3.http://jquery.cuishifeng.cn
4.http://www.jb51.net/shouce/jquery1.82/ 四、HTML5的框架
1.概念
有了HTML5的框架,编写简易的几行代码,就能实现非常漂亮的手机界面
HTML5框架封装了大量的DOM节点操作,封装了大量的CSS样式
2.常见的HTML5框架
1>PhoneGap
2>jQuery Mobile
3>sencha-touch */ @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; [self createWebView];
} - (void)createWebView
{
//1.创建webView
UIWebView *webview = [[UIWebView alloc] init];
webview.scalesPageToFit = YES;
CGRect frame = self.view.frame;
//frame.origin.y = 64;
webview.frame = frame;
[self.view addSubview:webview]; //2.加载请求
NSURL *url = [[NSBundle mainBundle] URLForResource:@"web" withExtension:@"xml"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webview loadRequest:request]; //3.设置代理
webview.delegate = self; self.webView = webview;
} #pragma mark - UIWebViewDelegate
//网页加载完毕
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
self.rewindItem.enabled = [webView canGoBack]; NSLog(@"webViewDidFinishLoad");
} - (void)webViewDidStartLoad:(UIWebView *)webView
{
NSLog(@"webViewDidStartLoad");
} - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
NSLog(@"didFailLoadWithError");
}
//一般用来拦截webView发出的所有请求(加载新的网页)
//每当webView即将发送一个请求之前,会先调用这个方法
//YES允许发送这个请求
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
/*
URL格式:协议头://主机名/路径
request.URL.path:获得的是主机名后面的路径
request.URL.absoluteString:获得的是一个完整的URL字符串
*/
return YES;
} - (IBAction)rewind:(id)sender {
[self.webView goBack];
}
- (IBAction)forward:(id)sender {
[self.webView goForward];
}
@end

三、OC调用JS代码(利用UIWebView)

 //
// ViewController.m
// IOS_0229_利用webView加载JS代码
//
// Created by ma c on 16/2/19.
// Copyright © 2016年 博文科技. All rights reserved.
// #import "ViewController.h" @interface ViewController ()<UIWebViewDelegate> @property (nonatomic, weak) UIActivityIndicatorView *loadingView; @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
[self createWebView];
} - (void)createWebView
{
//1.创建webView
UIWebView *webView = [[UIWebView alloc] init];
webView.frame = self.view.frame;
webView.delegate = self;
//隐藏scrollView
webView.scrollView.hidden = YES;
[self.view addSubview:webView];
webView.scalesPageToFit = YES; //2.加载网页
NSURL *url = [NSURL URLWithString:@"http://m.dianping.com/tuan/deal/5501525"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request]; //3.创建
UIActivityIndicatorView *loadingView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
loadingView.center = self.view.center;
[loadingView startAnimating];
[self.view addSubview:loadingView];
self.loadingView = loadingView;
}
//OC->JS(OC调用JS)
#pragma mark - UIWebViewDelegate
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
//执行JS代码,将大众点评中多余的节点删除掉 //拿到所有节点内容
NSString *html = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"];
NSLog(@"%@",html); NSMutableString *js1 = [NSMutableString string]; // 0.删除顶部的导航条
[js1 appendString:@"var header = document.getElementsByTagName('header')[0];"];
[js1 appendString:@"header.parentNode.removeChild(header);"]; //1.删除底部链接
[js1 appendString:@"var footer = document.getElementsByTagName('footer')[0];"];
[js1 appendString:@"footer.parentNode.removeChild(footer);"];
// NSLog(@"%@",js1);
[webView stringByEvaluatingJavaScriptFromString:js1]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.25 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
NSMutableString *js2 = [NSMutableString string];
//2.删除浮动的广告
[js2 appendString:@"var list = document.body.childNodes;"];
[js2 appendString:@"var len = list.length;"];
[js2 appendString:@"var banner = list[len-1];"];
[js2 appendString:@"banner.parentNode.removeChild(banner);"];
[webView stringByEvaluatingJavaScriptFromString:js2]; //显示scrollView
webView.scrollView.hidden = NO;
//删除等待指示器
[self.loadingView removeFromSuperview];
});
} @end

四、JS调用OC代码

一、以前使用js调用object-c的方法

1.在UIWebview中载入的js代码中通过改变document.locations=“”, window.location.href=""

2.然后回调

UIWebview的-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType函数,

通过截取NSURLRequest解析js中传递过来的参数,再根据参数来选择早已定义好的方法。

index.html

 <!--//  Created by bowen on 15-3-19.-->
<!--// Copyright (c) 2014年 bowen. All rights reserved.--> <!DOCTYPE html> <html>
<head lang="en">
<meta charset="utf-8">
<title></title>
</head> <body>
<p></p>
<div>
<button onclick="fn_open_camera();">拍照</button>
</div> <p></p>
<div>
<button onclick="fn_call();">打电话</button>
</div>
<script> function fn_call(){
//调用OC中的call方法
window.location.href = 'bw://call';
} function fn_open_camera(){
//调用OC中的openCamera方法
window.location.href = 'bw://camera';
} </script>
</body>
</html>
ViewController.m
 //
// ViewController.m
// JSCallOC
//
// Created by bowen on 15/11/17.
// Copyright © 2015年 bowen. All rights reserved.
// #import "ViewController.h" @interface ViewController ()<UIWebViewDelegate> @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
[self createWebView];
} - (void)createWebView
{
//1.创建WebView
UIWebView *webView = [[UIWebView alloc] init];
webView.frame = self.view.frame;
webView.delegate = self;
[self.view addSubview:webView]; //2.加载网页
NSURL *url = [[NSBundle mainBundle] URLForResource:@"index" withExtension:@"html"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];
} #pragma mark - UIWebViewDelegate
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *url = request.URL.absoluteString;
NSRange range = [url rangeOfString:@"bw://"];
NSUInteger loc = range.location;
if (loc != NSNotFound) {
//方法名
NSString *method = [url substringFromIndex:loc + range.length];
//转成SEL
SEL sel = NSSelectorFromString(method);
[self performSelector:sel withObject:nil];
}
return YES;
}
//打电话
- (void)call
{
NSLog(@"call");
}
//照相
- (void)camera
{
NSLog(@"camera");
} @end

二、利用javascriptCore.framework库

废话不多说,现在看看如何在UIWebView的javascript中调用oc的方法

首先在建立一个UIWebView,代码如下:

  1. //
  2. //  webview.m
  3. //  login
  4. //
  5. //  Created by wangdan on 15-3-19.
  6. //  Copyright (c) 2015年 wangdan. All rights reserved.
  7. //
  8. #import "webview.h"
  9. #import <JavaScriptCore/JavaScriptCore.h>
  10. @implementation webview
  11. -(id)initWithFrame:(CGRect)frame
  12. {
  13. self=[super initWithFrame:frame];
  14. if( self ){
  15. self.webview=[[UIWebView alloc]initWithFrame:CGRectMake(0, 310, self.bounds.size.width, 300)];
  16. self.webview.backgroundColor=[UIColor lightGrayColor];
  17. NSString *htmlPath=[[NSBundle mainBundle] resourcePath];
  18. htmlPath=[htmlPath stringByAppendingPathComponent:@"html/index.html"];
  19. NSURL *localURL=[[NSURL alloc]initFileURLWithPath:htmlPath];
  20. [self.webview loadRequest:[NSURLRequest requestWithURL:localURL]];
  21. [self addSubview:self.webview];
  22. JSContext *context = [self.webview valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
  23. context[@"log"] = ^() {
  24. NSLog(@"+++++++Begin Log+++++++");
  25. NSArray *args = [JSContext currentArguments];
  26. for (JSValue *jsVal in args) {
  27. NSLog(@"%@", jsVal);
  28. }
  29. JSValue *this = [JSContext currentThis];
  30. NSLog(@"this: %@",this);
  31. NSLog(@"-------End Log-------");
  32. };
  33. //        [context evaluateScript:@"log('ider', [7, 21], { hello:'world', js:100 });"];
  34. }
  35. return self;
  36. }
  37. @end

(1)在上述代码中,使用javascriptCore.framework,首先使用UIWebview加载一个静态网页,并

使用

JSContext *context = [self.webview valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

获取该UIWebview的javascript执行环境。

(2)在该javascript执行环境中,定义一个js函数,注意关键点来了

这个函数的执行体完全是 objective-c代码写的,也就是下面:

  1. context[@"jakilllog"] = ^() {
  2. NSLog(@"Begin Log");
  3. NSArray *args = [JSContext currentArguments];
  4. for (JSValue *jsVal in args) {
  5. NSLog(@"%@", jsVal);
  6. }
  7. JSValue *this = [JSContext currentThis];
  8. NSLog(@"-------End Log-------");
  9. };

(3)试想一下,在定义的webview中,如果使用js执行log这个函数,那么会不会调用上面oc中block段代码呢,答案是肯定的!

下面看看UIWebView 中所加载的 html及其js代码是如何写的

(4)index.html代码

  1. <!--//  Created by wangdan on 15-3-19.-->
  2. <!--//  Copyright (c) 2014年 wangdan. All rights reserved.-->
  3. <!DOCTYPE html>
  4. <html lang="en">
  5. <head>
  6. <meta charset="utf-8">
  7. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  8. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  9. <meta name="description" content="">
  10. <meta name="viewport" content="width=device-width; initial-scale=1.0">
  11. <script type="text/javascript" src="index.js"></script>
  12. </head>
  13. <button id="hallo" onclick="buttonClick()"> 点击button</button>
  14. </body>
  15. </html>

  1. 上面html定义了一个button,然后引用index.js,点击button的响应函数为buttonClick()
  1. 该函数在index.js中定义,如下
  1. function buttonClick()
  2. {
  3. jakilllog("hello world");
  4. }

意思是点击这个button,就调用jakilllog()函数,jakilllog()函数显然是我们在oc中实现的一个block段,

就是上述绿色部分的block段。

点击button会执行么?答案是肯定的。

下面上图

下图是执行的结果

点击html中的button,能够执行oc中的代码

说明直接从js调用oc的意图达到。

最近有很多朋友问我索要demo那么我把demo的地址上传到csdn

大家下载下来就很方便了。

demo地址

转自:http://blog.csdn.net/j_akill/article/details/44463301

IOS-网络(网页开发-UIWebView,HTML,CSS,JavaScript,OC和JS代码互调)的更多相关文章

  1. iOS WKWebview 网页开发适配指南

    iOS WKWebview 网页开发适配指南 微信iOS客户端将于2017年3月1日前逐步升级为WKWebview内核,需要网页开发者提前做好网站的兼容检查和适配.如有问题,可参考文末联系方式,向我们 ...

  2. ios网络学习------4 UIWebView的加载本地数据的三种方式

    ios网络学习------4 UIWebView的加载本地数据的三种方式 分类: IOS2014-06-27 12:56 959人阅读 评论(0) 收藏 举报 UIWebView是IOS内置的浏览器, ...

  3. UIWebView中Html中用JS调用OC方法及OC执行JS代码

    HTML代码: <html> <head> <title>HTML中用JS调用OC方法</title> <meta http-equiv=&quo ...

  4. iOS(UIWebView 和WKWebView)OC与JS交互 之二

    在iOS应用的开发过程中,我们经常会使用到WebView,当我们对WebView进行操作的时候,有时会需要进行源生的操作.那么我记下来就与大家分享一下OC与JS交互. 首先先说第一种方法,并没有牵扯O ...

  5. [iOS Hybrid实践:UIWebView中Html中用JS调用OC方法,OC执行JS代码]

    原理: 1.JS调用OC 每次webview执行跳转时都会被iOS给拦截,执行下面函数获得系统允许. 因此可以根据跳转信息转给系统,执行相应功能,比如打开相册等. // 网页中的每一个请求都会被触发 ...

  6. iOS WKWebview 网页开发适配指南【转】

    微信iOS客户端将于2017年3月1日前逐步升级为WKWebview内核,需要网页开发者提前做好网站的兼容检查和适配.如有问题,可参考文末联系方式,向我们咨询. 背景 WKWebView 是苹果在iO ...

  7. 微信iOS WKWebview 网页开发适配指南

    微信iOS客户端将于2017年3月1日前逐步升级为WKWebview内核,需要网页开发者提前做好网站的兼容检查和适配. 背景 WKWebView 是苹果在iOS 8中引入的新组件,目的是提供一个现代的 ...

  8. (五十九)iOS网络基础之UIWebView简易浏览器实现

    [UIWebView网络浏览器] 通过webView的loadRequest方法可以发送请求显示相应的网站,例如: NSURL *url = [NSURL URLWithString:@"h ...

  9. iOS 混合网页开发 问题

    在利用JavaScriptCore与H5交互时出现异常提示: This application is modifying the autolayout engine from a background ...

随机推荐

  1. 启动secondarynamenode时报错

    环境: mac系统 + hadoop2.6.0-cdh5.7.0伪分布式  问题一: 在启动hdfs的secondarynamenode时,报错. 正常情况: sumengdeMacBook-Pro: ...

  2. Java设计原则—依赖倒置原则(转)

    依赖倒置原则(Dependence Inversion Principle,DIP)的原始定义: 高层模块不应该依赖底层模块,两者都应该依赖其抽象: 抽象不应该依赖细节: 细节应该依赖抽象. 依赖倒置 ...

  3. Python3 计算城市距离

    利用上一篇得到的城市经纬度算城市距离 import requests from math import radians, cos, sin, asin, sqrt def geocode(addres ...

  4. java中的重量级与轻量级概念

    首先轻量级与重量级是一个相对的概念,主要是对应用框架使用方便性和所提供服务特性等方面做比较的. 比方说EJB就是一个重量级的框架,因为它对所编写的代码有限制,同时它也提供分布式等复杂的功能. 相比之下 ...

  5. Delphi7编译时,发生Access violation at address 00A7B628 in module 'dcc70.dll'. Read of address 00000000.(Delphi6升级到Delphi7)

    最近接了一个项目,要求使用Delphi7来开发程序,可是由于我们之前均使用delphi6来开发程序的,而且Delphi6使用很长时间了,积累并改造了第三方控件很成熟了: 故把Delphi6的控件移植( ...

  6. windows上面非常好用的辅助软件

    1.everything  快速查找本地文件 下载地址:http://www.voidtools.com/

  7. MysQL使用一与Python交互

    与python交互 在熟练使用sql语句的基础上,开始使用python语言提供的模块与mysql进行交互 这是我们在工作中大事要做的事 先学会sql是基础,一定要熟练编写sql语句 安装引入模块 安装 ...

  8. Jenkins 安装教程

    第一部分,安装Jenkins 1.首先在Jenkins repo yum源和Key [root@jenkins ~]# wget http://pkg.jenkins.io/redhat-stable ...

  9. 如何打开windows的远程桌面

    WINDOWS 2003/XP 系列设置方法 右键点击[我的电脑]选择[属性],进入[系统属性]界面,点击[远程]选项卡,勾选[启用这台计算机上的远程桌面]即可. 2003/XP系统默认只允许计算机a ...

  10. 迟到的thuwc&noiwc2018总结

    已经4个多月没写博客了呢. thuwc和noiwc都炸了,接下来的一段时间都没怎么写题,靠文化课和游戏麻醉自己.这篇博客也算是向之前自闭.颓废的自己告别吧.. 先写一发游记: thuwc:Day1炸, ...